summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svx/svdedtv.hxx5
-rw-r--r--include/svx/svdstr.hrc4
-rw-r--r--include/svx/svxids.hrc2
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu10
-rw-r--r--sd/sdi/_drvwsh.sdi10
-rw-r--r--sd/source/ui/view/drviews2.cxx13
-rw-r--r--sd/source/ui/view/drviewsj.cxx16
-rw-r--r--sd/uiconfig/sdraw/menubar/menubar.xml3
-rw-r--r--svx/inc/globlmn_tmpl.hrc20
-rw-r--r--svx/sdi/svx.sdi47
-rw-r--r--svx/source/svdraw/svdedtv2.cxx38
-rw-r--r--svx/source/svdraw/svdstr.src8
12 files changed, 171 insertions, 5 deletions
diff --git a/include/svx/svdedtv.hxx b/include/svx/svdedtv.hxx
index cdc23088704a..b109e0c532db 100644
--- a/include/svx/svdedtv.hxx
+++ b/include/svx/svdedtv.hxx
@@ -272,6 +272,11 @@ public:
// for distribution dialog function
void DistributeMarkedObjects();
+ // for setting either the width or height of all selected
+ // objects to the width/height of the last selected object
+ // of the selection
+ void EqualizeMarkedObjects(bool bWidth);
+
// Decompose marked polypolygon objects into polygons.
// Grouped objects are searched and decomposed, if all member objects are PathObjs.
// bMakeLines=TRUE: all polygones are decomposed into single lines resp. bezier segments
diff --git a/include/svx/svdstr.hrc b/include/svx/svdstr.hrc
index 90ef6975ca89..36e8719e5d0b 100644
--- a/include/svx/svdstr.hrc
+++ b/include/svx/svdstr.hrc
@@ -241,7 +241,9 @@
#define STR_EditMergeSubstractPoly (STR_EditBegin + 55)
#define STR_EditMergeIntersectPoly (STR_EditBegin + 56)
#define STR_DistributeMarkedObjects (STR_EditBegin + 57)
-#define STR_EditEnd (STR_DistributeMarkedObjects)
+#define STR_EqualizeWidthMarkedObjects (STR_EditBegin + 58)
+#define STR_EqualizeHeightMarkedObjects (STR_EditBegin + 59)
+#define STR_EditEnd (STR_EqualizeHeightMarkedObjects)
#define STR_ExchangeBegin (STR_EditEnd+1)
#define STR_ExchangePaste (STR_ExchangeBegin +0)
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index 5b8efbc204b9..67ee3dae8d7a 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -113,6 +113,8 @@
#define SID_POLY_INTERSECT (SID_SFX_START + 681)
#define SID_POLY_FORMEN (SID_SFX_START + 682)
#define SID_DISTRIBUTE_DLG (SID_SFX_START + 683)
+#define SID_EQUALIZEWIDTH (SID_SFX_START + 684)
+#define SID_EQUALIZEHEIGHT (SID_SFX_START + 685)
// Basic IDE-Id's
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 1c679bdad9a9..d221d56c8d86 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -3472,6 +3472,16 @@
<value xml:lang="en-US">~Subtract</value>
</prop>
</node>
+ <node oor:name=".uno:EqualizeWidth" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Equalize ~Width</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:EqualizeHeight" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Equalize ~Height</value>
+ </prop>
+ </node>
<node oor:name=".uno:SuperScript" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Superscript</value>
diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi
index 0b5469bfc660..6b2f17ccbe08 100644
--- a/sd/sdi/_drvwsh.sdi
+++ b/sd/sdi/_drvwsh.sdi
@@ -507,6 +507,16 @@ interface DrawView
ExecMethod = FuTemporary ;
StateMethod = GetMenuState ;
]
+ SID_EQUALIZEWIDTH // ole : no, status : ?
+ [
+ ExecMethod = FuTemporary ;
+ StateMethod = GetMenuState ;
+ ]
+ SID_EQUALIZEHEIGHT // ole : no, status : ?
+ [
+ ExecMethod = FuTemporary ;
+ StateMethod = GetMenuState ;
+ ]
SID_CONNECT // ole : no, status : ?
[
ExecMethod = FuTemporary ;
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index ffbb503d834d..90c3d599291d 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -2272,6 +2272,19 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
}
break;
+ case SID_EQUALIZEWIDTH:
+ case SID_EQUALIZEHEIGHT:
+ {
+ // End text edit to avoid conflicts
+ if(mpDrawView->IsTextEdit())
+ mpDrawView->SdrEndTextEdit();
+
+ mpDrawView->EqualizeMarkedObjects(nSId == SID_EQUALIZEWIDTH);
+ Cancel();
+ rReq.Done ();
+ }
+ break;
+
case SID_DISMANTLE: // BASIC
{
if ( mpDrawView->IsDismantlePossible(false) )
diff --git a/sd/source/ui/view/drviewsj.cxx b/sd/source/ui/view/drviewsj.cxx
index 857601ffa853..10a3f5ad403b 100644
--- a/sd/source/ui/view/drviewsj.cxx
+++ b/sd/source/ui/view/drviewsj.cxx
@@ -284,13 +284,15 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
rSet.Put(SfxBoolItem(SID_OUTLINE_TEXT_AUTOFIT, bSet));
}
- rSet.DisableItem( SID_GROUP );
- rSet.DisableItem( SID_COMBINE );
+ rSet.DisableItem(SID_GROUP);
+ rSet.DisableItem(SID_COMBINE);
rSet.DisableItem(SID_DISTRIBUTE_DLG);
rSet.DisableItem(SID_POLY_MERGE);
rSet.DisableItem(SID_POLY_SUBSTRACT);
rSet.DisableItem(SID_POLY_INTERSECT);
- rSet.DisableItem( SID_CONNECT );
+ rSet.DisableItem(SID_EQUALIZEWIDTH);
+ rSet.DisableItem(SID_EQUALIZEHEIGHT);
+ rSet.DisableItem(SID_CONNECT);
}
// multi-selection
else if( nMarkCount > 1 )
@@ -377,6 +379,8 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
rSet.DisableItem(SID_POLY_MERGE);
rSet.DisableItem(SID_POLY_SUBSTRACT);
rSet.DisableItem(SID_POLY_INTERSECT);
+ rSet.DisableItem(SID_EQUALIZEWIDTH);
+ rSet.DisableItem(SID_EQUALIZEHEIGHT);
}
if (b3dObj ||
@@ -438,10 +442,12 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
}
if ( !mpDrawView->IsCombinePossible(false) )
{
- rSet.DisableItem( SID_COMBINE );
+ rSet.DisableItem(SID_COMBINE);
rSet.DisableItem(SID_POLY_MERGE);
rSet.DisableItem(SID_POLY_SUBSTRACT);
rSet.DisableItem(SID_POLY_INTERSECT);
+ rSet.DisableItem(SID_EQUALIZEWIDTH);
+ rSet.DisableItem(SID_EQUALIZEHEIGHT);
}
if ( !mpDrawView->IsCombinePossible(true) )
{
@@ -501,6 +507,8 @@ void DrawViewShell::GetMenuStateSel( SfxItemSet &rSet )
rSet.DisableItem(SID_POLY_MERGE);
rSet.DisableItem(SID_POLY_SUBSTRACT);
rSet.DisableItem(SID_POLY_INTERSECT);
+ rSet.DisableItem(SID_EQUALIZEWIDTH);
+ rSet.DisableItem(SID_EQUALIZEHEIGHT);
rSet.DisableItem( SID_CONNECT );
rSet.DisableItem( SID_ANIMATION_EFFECTS );
rSet.DisableItem( SID_MODIFY_FIELD );
diff --git a/sd/uiconfig/sdraw/menubar/menubar.xml b/sd/uiconfig/sdraw/menubar/menubar.xml
index f12287b0b5f6..bc8cfeebf813 100644
--- a/sd/uiconfig/sdraw/menubar/menubar.xml
+++ b/sd/uiconfig/sdraw/menubar/menubar.xml
@@ -346,6 +346,9 @@
<menu:menuitem menu:id=".uno:Merge"/>
<menu:menuitem menu:id=".uno:Substract"/>
<menu:menuitem menu:id=".uno:Intersect"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:EqualizeWidth"/>
+ <menu:menuitem menu:id=".uno:EqualizeHeight"/>
</menu:menupopup>
</menu:menu>
<menu:menuseparator/>
diff --git a/svx/inc/globlmn_tmpl.hrc b/svx/inc/globlmn_tmpl.hrc
index 9d511c810af8..8d8248914e21 100644
--- a/svx/inc/globlmn_tmpl.hrc
+++ b/svx/inc/globlmn_tmpl.hrc
@@ -306,6 +306,20 @@
Command = ".uno:Intersect" ; \
Text [ en-US ] = "I~ntersect" ; \
};
+#define ITEM_EQUALIZEWIDTH \
+ MenuItem\
+ {\
+ Identifier = SID_EQUALIZEWIDTH ; \
+ Command = ".uno:EqualizeWidth" ; \
+ Text [ en-US ] = "Equalize ~Width" ; \
+ };
+#define ITEM_EQUALIZEHEIGHT \
+ MenuItem\
+ {\
+ Identifier = SID_EQUALIZEHEIGHT ; \
+ Command = ".uno:EqualizeHeight" ; \
+ Text [ en-US ] = "Equalize ~Height" ; \
+ };
#define MNSUB_FORMEN \
MenuItem \
@@ -320,6 +334,12 @@
ITEM_POLY_MERGE \
ITEM_POLY_SUBSTRACT \
ITEM_POLY_INTERSECT \
+ MenuItem \
+ { \
+ Separator = TRUE; \
+ }; \
+ ITEM_EQUALIZEWIDTH \
+ ITEM_EQUALIZEHEIGHT \
};\
};\
};
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index 941f3e8d1966..b301c58b1176 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -11100,6 +11100,53 @@ SfxVoidItem Substract SID_POLY_SUBSTRACT
GroupId = GID_MODIFY;
]
+SfxVoidItem EqualizeWidth SID_EQUALIZEWIDTH
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_MODIFY;
+]
+
+SfxVoidItem EqualizeHeight SID_EQUALIZEHEIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_MODIFY;
+]
SfxBoolItem SuperScript SID_SET_SUPER_SCRIPT
diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx
index 0a60082c2422..ad7dd3fa5e96 100644
--- a/svx/source/svdraw/svdedtv2.cxx
+++ b/svx/source/svdraw/svdedtv2.cxx
@@ -1173,6 +1173,44 @@ void SdrEditView::MergeMarkedObjects(SdrMergeMode eMode)
}
}
+void SdrEditView::EqualizeMarkedObjects(bool bWidth)
+{
+ const SdrMarkList& rMarkList = GetMarkedObjectList();
+ size_t nMarked = rMarkList.GetMarkCount();
+
+ if (nMarked < 2)
+ return;
+
+ SdrObject* pLastSelectedObj = rMarkList.GetMark(nMarked-1)->GetMarkedSdrObj();
+ Size aLastRectSize(pLastSelectedObj->GetLogicRect().GetSize());
+
+ const bool bUndo = IsUndoEnabled();
+
+ if (bUndo)
+ BegUndo();
+
+ for (size_t a = 0; a < nMarked-1; ++a)
+ {
+ SdrMark* pM = rMarkList.GetMark(a);
+ SdrObject* pObj = pM->GetMarkedSdrObj();
+ Rectangle aLogicRect(pObj->GetLogicRect());
+ Size aLogicRectSize(aLogicRect.GetSize());
+ if (bWidth)
+ aLogicRectSize.Width() = aLastRectSize.Width();
+ else
+ aLogicRectSize.Height() = aLastRectSize.Height();
+ aLogicRect.SetSize(aLogicRectSize);
+ pObj->SetLogicRect(aLogicRect);
+ }
+
+ SetUndoComment(
+ ImpGetResStr(bWidth ? STR_EqualizeWidthMarkedObjects : STR_EqualizeHeightMarkedObjects),
+ rMarkList.GetMarkDescription());
+
+ if (bUndo)
+ EndUndo();
+}
+
void SdrEditView::CombineMarkedObjects(bool bNoPolyPoly)
{
// #105899# Start of Combine-Undo put to front, else ConvertMarkedToPolyObj would
diff --git a/svx/source/svdraw/svdstr.src b/svx/source/svdraw/svdstr.src
index 364749a015fc..6dc442028236 100644
--- a/svx/source/svdraw/svdstr.src
+++ b/svx/source/svdraw/svdstr.src
@@ -823,6 +823,14 @@ String STR_DistributeMarkedObjects
{
Text [ en-US ] = "Distribute selected objects";
};
+String STR_EqualizeWidthMarkedObjects
+{
+ Text [ en-US ] = "Equalize Width %1";
+};
+String STR_EqualizeHeightMarkedObjects
+{
+ Text [ en-US ] = "Equalize Height %1";
+};
String STR_EditCombine_OnePoly
{
Text [ en-US ] = "Combine %1" ;