

index a71206897d4f..40ddf828cf97 100644

--- a/

+++ b/ diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcuindex a71206897d4f..40ddf828cf97 100644--- a/ officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/ officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -765,6 +765,22 @@ <value>1</value> </prop> </node> + <node oor:name=".uno:ChangePicture" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">~Change Image...</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> + <node oor:name=".uno:CompressGraphic" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Co~mpress Image...</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> <node oor:name=".uno:NewHtmlDoc" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Create ~HTML Document</value>

index 69a2b6529094..289fb92f04a7 100644

--- a/

+++ b/ diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxxindex 69a2b6529094..289fb92f04a7 100644--- a/ sw/inc/fesh.hxx +++ b/ sw/inc/fesh.hxx @@ -473,6 +473,12 @@ public: /// Set DragMode (e.g. Rotate), but do nothing when frame is selected. void SetDragMode( sal_uInt16 eSdrDragMode ); + // Get the current drag mode + SdrDragMode GetDragMode() const; + + // Start cropping the selected image + void StartCropImage(); + size_t IsObjSelected() const; ///< @return object count, but doesn't count the objects in groups. bool IsObjSelected( const SdrObject& rObj ) const; bool IsObjSameLevelWithMarked(const SdrObject* pObj) const;

index 2eb2ab292437..bb50bc9504cd 100644

--- a/

+++ b/ diff --git a/sw/sdi/_grfsh.sdi b/sw/sdi/_grfsh.sdiindex 2eb2ab292437..bb50bc9504cd 100644--- a/ sw/sdi/_grfsh.sdi +++ b/ sw/sdi/_grfsh.sdi @@ -90,6 +90,13 @@ interface BaseTextGraphic DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; ] + SID_OBJECT_CROP + [ + ExecMethod = Execute ; + StateMethod = GetAttrState ; + DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; + ] + SID_INSERT_GRAPHIC // zeigt auf FN_FORMAT_GRAFIC_DLG [ ExecMethod = Execute ; @@ -231,11 +238,6 @@ interface BaseTextGraphic StateMethod = GetAttrState ; DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; ] - SID_CHANGE_PICTURE - [ - ExecMethod = FuTemporary ; - StateMethod = GetMenuState ; - ] SID_GRFFILTER_SOLARIZE // status(final|play|rec) [ ExecMethod = ExecAttr ;

index ec6a2f3c7855..6ba8e5158b38 100644

--- a/

+++ b/ diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxxindex ec6a2f3c7855..6ba8e5158b38 100644--- a/ sw/source/core/draw/dflyobj.cxx +++ b/ sw/source/core/draw/dflyobj.cxx @@ -19,10 +19,12 @@ #include "hintids.hxx" #include <comphelper/lok.hxx> +#include <tools/mapunit.hxx> #include <svx/svdtrans.hxx> #include <editeng/protitem.hxx> #include <editeng/opaqitem.hxx> #include <svx/svdpage.hxx> +#include <vcl/svapp.hxx> #include <fmtclds.hxx> #include <fmtornt.hxx> @@ -45,6 +47,7 @@ #include "grfatr.hxx" #include "pagefrm.hxx" #include "rootfrm.hxx" +#include "wrtsh.hxx" #include <svx/sdr/properties/defaultproperties.hxx> #include <basegfx/range/b2drange.hxx> @@ -729,6 +732,83 @@ void SwVirtFlyDrawObj::NbcMove(const Size& rSiz) pFmt->SetFmtAttr( aSet ); } + +void SwVirtFlyDrawObj::NbcCrop(const Point& rRef, const Fraction& xFact, const Fraction& yFact) +{ + // Get Wrt Shell + SwWrtShell *pSh = dynamic_cast<SwWrtShell*>( GetFlyFrm()->getRootFrm()->GetCurrShell() ); + if (!pSh || !pSh->ISA(SwWrtShell)) + return; + + // Compute old and new rect. This will give us the deformation to apply to + // the object to crop + Rectangle aOldRect( aOutRect ); + + Rectangle aNewRect( aOutRect ); + ResizeRect( aNewRect, rRef, xFact, yFact ); + + // Get graphic object size in 100th of mm + GraphicObject *pGraphicObject = (GraphicObject *) pSh->GetGraphicObj(); + if (!pGraphicObject) + return; + const MapMode aMapMode100thmm(MAP_100TH_MM); + Size aGraphicSize(pGraphicObject->GetPrefSize()); + if( MAP_PIXEL == pGraphicObject->GetPrefMapMode().GetMapUnit() ) + aGraphicSize = Application::GetDefaultDevice()->PixelToLogic( aGraphicSize, aMapMode100thmm ); + else + aGraphicSize = Application::GetDefaultDevice()->LogicToLogic( aGraphicSize, pGraphicObject->GetPrefMapMode(), aMapMode100thmm); + if( aGraphicSize.A() == 0 || aGraphicSize.B() == 0 ) + return ; + + // Get old values for crop in 10th of mm + SfxItemSet aSet( pSh->GetAttrPool(), RES_GRFATR_CROPGRF, RES_GRFATR_CROPGRF ); + pSh->GetCurAttr( aSet ); + SwCropGrf aCrop( (const SwCropGrf&) aSet.Get(RES_GRFATR_CROPGRF) ); + + Rectangle aCropRectangle( + convertTwipToMm100(aCrop.GetLeft()), + convertTwipToMm100(aCrop.GetTop()), + convertTwipToMm100(aCrop.GetRight()), + convertTwipToMm100(aCrop.GetBottom()) ); + + // Compute delta to apply + double fScaleX = ( aGraphicSize.Width() - aCropRectangle.Left() - aCropRectangle.Right() ) / (double)aOldRect.GetWidth(); + double fScaleY = ( aGraphicSize.Height() - aCropRectangle.Top() - aCropRectangle.Bottom() ) / (double)aOldRect.GetHeight(); + + sal_Int32 nDiffLeft = aNewRect.Left() - aOldRect.Left(); + sal_Int32 nDiffTop = aNewRect.Top() - aOldRect.Top(); + sal_Int32 nDiffRight = aNewRect.Right() - aOldRect.Right(); + sal_Int32 nDiffBottom = aNewRect.Bottom() - aOldRect.Bottom(); + + // Compute new values in 10th of mm + sal_Int32 nLeftCrop = static_cast<sal_Int32>( aCropRectangle.Left() + nDiffLeft * fScaleX ); + sal_Int32 nTopCrop = static_cast<sal_Int32>( aCropRectangle.Top() + nDiffTop * fScaleY ); + sal_Int32 nRightCrop = static_cast<sal_Int32>( aCropRectangle.Right() - nDiffRight * fScaleX ); + sal_Int32 nBottomCrop = static_cast<sal_Int32>( aCropRectangle.Bottom() - nDiffBottom * fScaleY ); + + // Apply values + pSh->StartAllAction(); +// pSh->StartUndo(UNDO_START); + + // Set new crop values in twips + aCrop.SetLeft (convertMm100ToTwip(nLeftCrop)); + aCrop.SetTop (convertMm100ToTwip(nTopCrop)); + aCrop.SetRight (convertMm100ToTwip(nRightCrop)); + aCrop.SetBottom(convertMm100ToTwip(nBottomCrop)); + pSh->SetAttrItem(aCrop); + + // Set new frame size + SwFrmFmt *pFmt = GetFmt(); + SwFmtFrmSize aSz( pFmt->GetFrmSize() ); + aSz.SetWidth(aNewRect.GetWidth()); + aSz.SetHeight(aNewRect.GetHeight()); + pFmt->GetDoc()->SetAttr( aSz, *pFmt ); + +// pSh->EndUndo(UNDO_END); + pSh->EndAllAction(); + +} + void SwVirtFlyDrawObj::NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) { @@ -847,6 +927,30 @@ void SwVirtFlyDrawObj::Resize(const Point& rRef, GetFmt()->GetDoc()->GetIDocumentUndoRedo().DoDrawUndo(false); } +void SwVirtFlyDrawObj::Crop(const Point& rRef, const Fraction& xFact, const Fraction& yFact) +{ + NbcCrop( rRef, xFact, yFact ); + SetChanged(); + GetFmt()->GetDoc()->GetIDocumentUndoRedo().DoDrawUndo(false); +} + +void SwVirtFlyDrawObj::addCropHandles(SdrHdlList& rTarget) const +{ + Rectangle aRect(GetSnapRect()); + + if(!aRect.IsEmpty()) + { + rTarget.AddHdl(new SdrCropHdl(aRect.TopLeft() , HDL_UPLFT, 0, 0)); + rTarget.AddHdl(new SdrCropHdl(aRect.TopCenter() , HDL_UPPER, 0, 0)); + rTarget.AddHdl(new SdrCropHdl(aRect.TopRight() , HDL_UPRGT, 0, 0)); + rTarget.AddHdl(new SdrCropHdl(aRect.LeftCenter() , HDL_LEFT , 0, 0)); + rTarget.AddHdl(new SdrCropHdl(aRect.RightCenter() , HDL_RIGHT, 0, 0)); + rTarget.AddHdl(new SdrCropHdl(aRect.BottomLeft() , HDL_LWLFT, 0, 0)); + rTarget.AddHdl(new SdrCropHdl(aRect.BottomCenter(), HDL_LOWER, 0, 0)); + rTarget.AddHdl(new SdrCropHdl(aRect.BottomRight() , HDL_LWRGT, 0, 0)); + } +} + // Macro Pointer SwVirtFlyDrawObj::GetMacroPointer(

index 0e5b31d4e97f..0045a671e822 100644

--- a/

+++ b/ diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxxindex 0e5b31d4e97f..0045a671e822 100644--- a/ sw/source/core/frmedt/feshview.cxx +++ b/ sw/source/core/frmedt/feshview.cxx @@ -179,6 +179,11 @@ bool SwFEShell::SelectObj( const Point& rPt, sal_uInt8 nFlag, SdrObject *pObj ) { GetWin()->Invalidate( pOldSelFly->Frm().SVRect() ); } + + // Cancel crop mode + if ( SDRDRAG_CROP == GetDragMode() ) + SetDragMode( SDRDRAG_MOVE ); + bUnmark = true; } } @@ -602,6 +607,52 @@ void SwFEShell::SetDragMode( sal_uInt16 eDragMode ) Imp()->GetDrawView()->SetDragMode( (SdrDragMode)eDragMode ); } +SdrDragMode SwFEShell::GetDragMode() const +{ + SdrDragMode nRet = (SdrDragMode)0; + if ( Imp()->HasDrawView() ) + { + nRet = Imp()->GetDrawView()->GetDragMode(); + } + return nRet; +} + +void SwFEShell::StartCropImage() +{ + if ( !Imp()->HasDrawView() ) + { + return; + } + SdrView *pView = Imp()->GetDrawView(); + if (!pView) return; + + const SdrMarkList &rMarkList = pView->GetMarkedObjectList(); + if( 0 == rMarkList.GetMarkCount() ) { + // No object selected + return; + } + + // If more than a single SwVirtFlyDrawObj is selected, select only the first SwVirtFlyDrawObj + if ( rMarkList.GetMarkCount() > 1 ) + { + for ( sal_uInt16 i = 0; i < rMarkList.GetMarkCount(); ++i ) + { + SdrObject *pTmpObj = rMarkList.GetMark( i )->GetMarkedSdrObj(); + sal_Bool bForget = pTmpObj->ISA(SwVirtFlyDrawObj); + if( bForget ) + { + pView->UnmarkAll(); + pView->MarkObj( pTmpObj, Imp()->GetPageView(), sal_False, sal_False ); + break; + } + } + } + + // Activate CROP mode + pView->SetEditMode( SDREDITMODE_EDIT ); + SetDragMode( SDRDRAG_CROP ); +} + long SwFEShell::BeginDrag( const Point* pPt, bool bIsShift) { SdrView *pView = Imp()->GetDrawView(); @@ -669,6 +720,7 @@ long SwFEShell::EndDrag( const Point *, bool ) GetDoc()->getIDocumentState().SetModified(); ::FrameNotify( this, FLY_DRAG ); + return 1; } return 0;

index 4afba0e1b51a..173edfad3f22 100644

--- a/

+++ b/ diff --git a/sw/source/core/inc/dflyobj.hxx b/sw/source/core/inc/dflyobj.hxxindex 4afba0e1b51a..173edfad3f22 100644--- a/ sw/source/core/inc/dflyobj.hxx +++ b/ sw/source/core/inc/dflyobj.hxx @@ -101,9 +101,12 @@ public: virtual void NbcMove (const Size& rSiz) SAL_OVERRIDE; virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) SAL_OVERRIDE; + virtual void NbcCrop(const Point& rRef, const Fraction& xFact, const Fraction& yFact) SAL_OVERRIDE; virtual void Move (const Size& rSiz) SAL_OVERRIDE; virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true) SAL_OVERRIDE; + virtual void Crop(const Point& rRef, const Fraction& xFact, const Fraction& yFact) SAL_OVERRIDE; + virtual void addCropHandles(SdrHdlList& rTarget) const; const SwFrmFmt *GetFmt() const; SwFrmFmt *GetFmt();

index 7297344f120b..bbf90727c00b 100644

--- a/

+++ b/ diff --git a/sw/source/ui/app/mn.src b/sw/source/ui/app/mn.srcindex 7297344f120b..bbf90727c00b 100644--- a/ sw/source/ui/app/mn.src +++ b/ sw/source/ui/app/mn.src @@ -1157,6 +1157,9 @@ Menu MN_GRF_POPUPMENU MenuItem { ITEM_SAVE_GRAPHIC }; SEPARATOR ; + MenuItem { ITEM_OBJECT_CROP }; + SEPARATOR ; + MN_ANCHOR MN_MOUSE_FRAME_WITH_CONTOUR MN_ALIGNMENT_FRAME

index 13d140e84e40..700f9489b58b 100644

--- a/

+++ b/ diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxxindex 13d140e84e40..700f9489b58b 100644--- a/ sw/source/uibase/docvw/edtwin.cxx +++ b/ sw/source/uibase/docvw/edtwin.cxx @@ -3999,6 +3999,9 @@ void SwEditWin::MouseMove(const MouseEvent& _rMEvt) if (pSdrView) { + if (pSdrView->GetDragMode() == SDRDRAG_CROP) + bisResize = false; + if (rMEvt.IsShift()) { pSdrView->SetAngleSnapEnabled(!bIsSelectionGfx); @@ -4208,7 +4211,10 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt) SdrView *pSdrView = rSh.GetDrawView(); if ( pSdrView ) { - pSdrView->SetOrtho(false); + // tdf34555: ortho was always reset before being used in EndSdrDrag + // Now, it is reset only if not in Crop mode. + if (pSdrView->GetDragMode() != SDRDRAG_CROP) + pSdrView->SetOrtho(false); if ( pSdrView->MouseButtonUp( rMEvt,this ) ) {

index 7823ca126637..170f96624114 100644

--- a/

+++ b/ diff --git a/sw/source/uibase/shells/grfsh.cxx b/sw/source/uibase/shells/grfsh.cxxindex 7823ca126637..170f96624114 100644--- a/ sw/source/uibase/shells/grfsh.cxx +++ b/ sw/source/uibase/shells/grfsh.cxx @@ -475,6 +475,15 @@ void SwGrfShell::Execute(SfxRequest &rReq) } break; + case SID_OBJECT_CROP: + { + GraphicObject *pGraphicObject = (GraphicObject *) rSh.GetGraphicObj(); + if (0 != pGraphicObject && SDRDRAG_CROP != rSh.GetDragMode()) { + rSh.StartCropImage(); + } + } + break; + default: OSL_ENSURE(false, "wrong dispatcher"); return; @@ -803,6 +812,14 @@ void SwGrfShell::GetAttrState(SfxItemSet &rSet) } break; + case SID_OBJECT_CROP: + { + bDisable = 0 != rSh.IsSelObjProtected( FLYPROTECT_CONTENT|FLYPROTECT_PARENT ); + if( rSh.GetGraphicType() == GRAPHIC_NONE ) + bDisable = true; + } + break; + default: bDisable = false; }

index d92a255965fb..4a27b2814053 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml b/sw/uiconfig/sglobal/menubar/menubar.xmlindex d92a255965fb..4a27b2814053 100644--- a/ sw/uiconfig/sglobal/menubar/menubar.xml +++ b/ sw/uiconfig/sglobal/menubar/menubar.xml @@ -279,6 +279,18 @@ </menu:menupopup> </menu:menu> <menu:menuseparator/> + <menu:menu menu:id=".uno:FormatImageMenu"> + <menu:menupopup> + <menu:menuitem menu:id=".uno:Crop"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:ExternalEdit"/> + <menu:menuitem menu:id=".uno:ChangePicture"/> + <menu:menuitem menu:id=".uno:CompressGraphic"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:SaveGraphic"/> + </menu:menupopup> + </menu:menu> + <menu:menuseparator/> <menu:menu menu:id=".uno:AnchorMenu"> <menu:menupopup> <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>

index 6e7201c82042..1f27f3c6bbd9 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/sglobal/toolbar/graphicobjectbar.xml b/sw/uiconfig/sglobal/toolbar/graphicobjectbar.xmlindex 6e7201c82042..1f27f3c6bbd9 100644--- a/ sw/uiconfig/sglobal/toolbar/graphicobjectbar.xml +++ b/ sw/uiconfig/sglobal/toolbar/graphicobjectbar.xml @@ -30,6 +30,7 @@ <toolbar:toolbaritem xlink:href=".uno:FlipHorizontal" toolbar:helpid="20425"/> <toolbar:toolbaritem xlink:href=".uno:RotateLeft" toolbar:helpid=""/> <toolbar:toolbaritem xlink:href=".uno:RotateRight" toolbar:helpid=""/> + <toolbar:toolbaritem xlink:href=".uno:Crop" toolbar:helpid=""/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:FrameDialog" toolbar:helpid="20458"/> </toolbar:toolbar>

index f6836bb4f99e..922b0cf5595e 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/sweb/menubar/menubar.xml b/sw/uiconfig/sweb/menubar/menubar.xmlindex f6836bb4f99e..922b0cf5595e 100644--- a/ sw/uiconfig/sweb/menubar/menubar.xml +++ b/ sw/uiconfig/sweb/menubar/menubar.xml @@ -222,6 +222,18 @@ </menu:menupopup> </menu:menu> <menu:menuseparator/> + <menu:menu menu:id=".uno:FormatImageMenu"> + <menu:menupopup> + <menu:menuitem menu:id=".uno:Crop"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:ExternalEdit"/> + <menu:menuitem menu:id=".uno:ChangePicture"/> + <menu:menuitem menu:id=".uno:CompressGraphic"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:SaveGraphic"/> + </menu:menupopup> + </menu:menu> + <menu:menuseparator/> <menu:menu menu:id=".uno:AnchorMenu"> <menu:menupopup> <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>

index 6f081acc1b47..4795e4476b33 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swform/menubar/menubar.xml b/sw/uiconfig/swform/menubar/menubar.xmlindex 6f081acc1b47..4795e4476b33 100644--- a/ sw/uiconfig/swform/menubar/menubar.xml +++ b/ sw/uiconfig/swform/menubar/menubar.xml @@ -278,6 +278,18 @@ </menu:menupopup> </menu:menu> <menu:menuseparator/> + <menu:menu menu:id=".uno:FormatImageMenu"> + <menu:menupopup> + <menu:menuitem menu:id=".uno:Crop"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:ExternalEdit"/> + <menu:menuitem menu:id=".uno:ChangePicture"/> + <menu:menuitem menu:id=".uno:CompressGraphic"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:SaveGraphic"/> + </menu:menupopup> + </menu:menu> + <menu:menuseparator/> <menu:menu menu:id=".uno:AnchorMenu"> <menu:menupopup> <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>

index 6e7201c82042..1f27f3c6bbd9 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swform/toolbar/graphicobjectbar.xml b/sw/uiconfig/swform/toolbar/graphicobjectbar.xmlindex 6e7201c82042..1f27f3c6bbd9 100644--- a/ sw/uiconfig/swform/toolbar/graphicobjectbar.xml +++ b/ sw/uiconfig/swform/toolbar/graphicobjectbar.xml @@ -30,6 +30,7 @@ <toolbar:toolbaritem xlink:href=".uno:FlipHorizontal" toolbar:helpid="20425"/> <toolbar:toolbaritem xlink:href=".uno:RotateLeft" toolbar:helpid=""/> <toolbar:toolbaritem xlink:href=".uno:RotateRight" toolbar:helpid=""/> + <toolbar:toolbaritem xlink:href=".uno:Crop" toolbar:helpid=""/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:FrameDialog" toolbar:helpid="20458"/> </toolbar:toolbar>

index 4d9ba26bd992..f9d3fececa89 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swreport/menubar/menubar.xml b/sw/uiconfig/swreport/menubar/menubar.xmlindex 4d9ba26bd992..f9d3fececa89 100644--- a/ sw/uiconfig/swreport/menubar/menubar.xml +++ b/ sw/uiconfig/swreport/menubar/menubar.xml @@ -280,6 +280,18 @@ </menu:menupopup> </menu:menu> <menu:menuseparator/> + <menu:menu menu:id=".uno:FormatImageMenu"> + <menu:menupopup> + <menu:menuitem menu:id=".uno:Crop"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:ExternalEdit"/> + <menu:menuitem menu:id=".uno:ChangePicture"/> + <menu:menuitem menu:id=".uno:CompressGraphic"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:SaveGraphic"/> + </menu:menupopup> + </menu:menu> + <menu:menuseparator/> <menu:menu menu:id=".uno:AnchorMenu"> <menu:menupopup> <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>

index 6e7201c82042..1f27f3c6bbd9 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swreport/toolbar/graphicobjectbar.xml b/sw/uiconfig/swreport/toolbar/graphicobjectbar.xmlindex 6e7201c82042..1f27f3c6bbd9 100644--- a/ sw/uiconfig/swreport/toolbar/graphicobjectbar.xml +++ b/ sw/uiconfig/swreport/toolbar/graphicobjectbar.xml @@ -30,6 +30,7 @@ <toolbar:toolbaritem xlink:href=".uno:FlipHorizontal" toolbar:helpid="20425"/> <toolbar:toolbaritem xlink:href=".uno:RotateLeft" toolbar:helpid=""/> <toolbar:toolbaritem xlink:href=".uno:RotateRight" toolbar:helpid=""/> + <toolbar:toolbaritem xlink:href=".uno:Crop" toolbar:helpid=""/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:FrameDialog" toolbar:helpid="20458"/> </toolbar:toolbar>

index edcf10ef1c1d..dc794495939c 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xmlindex edcf10ef1c1d..dc794495939c 100644--- a/ sw/uiconfig/swriter/menubar/menubar.xml +++ b/ sw/uiconfig/swriter/menubar/menubar.xml @@ -296,6 +296,18 @@ </menu:menupopup> </menu:menu> <menu:menuseparator/> + <menu:menu menu:id=".uno:FormatImageMenu"> + <menu:menupopup> + <menu:menuitem menu:id=".uno:Crop"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:ExternalEdit"/> + <menu:menuitem menu:id=".uno:ChangePicture"/> + <menu:menuitem menu:id=".uno:CompressGraphic"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:SaveGraphic"/> + </menu:menupopup> + </menu:menu> + <menu:menuseparator/> <menu:menu menu:id=".uno:AnchorMenu"> <menu:menupopup> <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>

index daccb1461598..a41a1dffbf24 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swriter/toolbar/graphicobjectbar.xml b/sw/uiconfig/swriter/toolbar/graphicobjectbar.xmlindex daccb1461598..a41a1dffbf24 100644--- a/ sw/uiconfig/swriter/toolbar/graphicobjectbar.xml +++ b/ sw/uiconfig/swriter/toolbar/graphicobjectbar.xml @@ -30,6 +30,7 @@ <toolbar:toolbaritem xlink:href=".uno:FlipHorizontal" toolbar:helpid="20425"/> <toolbar:toolbaritem xlink:href=".uno:RotateLeft" toolbar:helpid=""/> <toolbar:toolbaritem xlink:href=".uno:RotateRight" toolbar:helpid=""/> + <toolbar:toolbaritem xlink:href=".uno:Crop" toolbar:helpid=""/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:GraphicDialog" toolbar:visible="false"/> </toolbar:toolbar>

index 854d89c139f9..c6cf58f31702 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swxform/menubar/menubar.xml b/sw/uiconfig/swxform/menubar/menubar.xmlindex 854d89c139f9..c6cf58f31702 100644--- a/ sw/uiconfig/swxform/menubar/menubar.xml +++ b/ sw/uiconfig/swxform/menubar/menubar.xml @@ -280,6 +280,18 @@ </menu:menupopup> </menu:menu> <menu:menuseparator/> + <menu:menu menu:id=".uno:FormatImageMenu"> + <menu:menupopup> + <menu:menuitem menu:id=".uno:Crop"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:ExternalEdit"/> + <menu:menuitem menu:id=".uno:ChangePicture"/> + <menu:menuitem menu:id=".uno:CompressGraphic"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:SaveGraphic"/> + </menu:menupopup> + </menu:menu> + <menu:menuseparator/> <menu:menu menu:id=".uno:AnchorMenu"> <menu:menupopup> <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>

index 6e7201c82042..1f27f3c6bbd9 100644

--- a/

+++ b/ diff --git a/sw/uiconfig/swxform/toolbar/graphicobjectbar.xml b/sw/uiconfig/swxform/toolbar/graphicobjectbar.xmlindex 6e7201c82042..1f27f3c6bbd9 100644--- a/ sw/uiconfig/swxform/toolbar/graphicobjectbar.xml +++ b/ sw/uiconfig/swxform/toolbar/graphicobjectbar.xml @@ -30,6 +30,7 @@ <toolbar:toolbaritem xlink:href=".uno:FlipHorizontal" toolbar:helpid="20425"/> <toolbar:toolbaritem xlink:href=".uno:RotateLeft" toolbar:helpid=""/> <toolbar:toolbaritem xlink:href=".uno:RotateRight" toolbar:helpid=""/> + <toolbar:toolbaritem xlink:href=".uno:Crop" toolbar:helpid=""/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:FrameDialog" toolbar:helpid="20458"/> </toolbar:toolbar>