summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorArmin Le Grand (Allotropia) <Armin.Le.Grand@me.com>2022-02-25 18:46:23 +0100
committerArmin Le Grand <Armin.Le.Grand@me.com>2022-03-02 11:55:07 +0100
commite8a004d54dc939b257b2851a78c324269e2a3973 (patch)
tree132dd9adb1d398442d1d83a934367aa1ce3b81c6 /sw
parent9f7cbc3a5358620f94fd175dbd494e6d5c01f3de (diff)
Advanced Diagram support: Disable enter Diagram (Groups)
Groups which are in Diagram mode should not be entered, to do so disable at UI and - for security reasons - also at the executing mehod. Groups in Diagram mode can still be UnGrouped (which will remove the Diagram status & data) Adapted testRegenerateDiagram() to directly act on the model data to test the same as before. Using triggering of UI events to enter the diagram group object needs reorganization, but model op's will always be possible Change-Id: I199f3821c2a8308a6f015997ce9eaef87623c46a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130541 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/fesh.hxx2
-rw-r--r--sw/source/core/frmedt/feshview.cxx14
-rw-r--r--sw/source/uibase/shells/drwbassh.cxx8
3 files changed, 17 insertions, 7 deletions
diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx
index 4b7ec6a9d973..3801bac30dd9 100644
--- a/sw/inc/fesh.hxx
+++ b/sw/inc/fesh.hxx
@@ -542,7 +542,7 @@ public:
bool EndMark ();
/// Create and destroy group, don't when frame is selected.
- bool IsGroupSelected(); ///< Can be a mixed selection!
+ bool IsGroupSelected(bool bAllowDiagams); ///< Can be a mixed selection!
void GroupSelection(); ///< Afterwards the group is selected.
void UnGroupSelection(); /**< The individual objects are selected, but
it is possible that there are groups included. */
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 0b4dd1cb70f6..30be64dc9058 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -2425,7 +2425,7 @@ Point SwFEShell::GetObjAbsPos() const
return Imp()->GetDrawView()->GetDragStat().GetActionRect().TopLeft();
}
-bool SwFEShell::IsGroupSelected()
+bool SwFEShell::IsGroupSelected(bool bAllowDiagams)
{
if ( IsObjSelected() )
{
@@ -2441,6 +2441,16 @@ bool SwFEShell::IsGroupSelected()
RndStdIds::FLY_AS_CHAR != static_cast<SwDrawContact*>(GetUserCall(pObj))->
GetFormat()->GetAnchor().GetAnchorId() )
{
+ if(!bAllowDiagams)
+ {
+ // Don't allow enter Diagrams
+ auto* pGroup(dynamic_cast<SdrObjGroup*>(pObj));
+ if(nullptr != pGroup && pGroup->isDiagram())
+ {
+ return false;
+ }
+ }
+
return true;
}
}
@@ -2565,7 +2575,7 @@ void SwFEShell::GroupSelection()
// The individual objects get a copy of the anchor and the contactobject of the group
void SwFEShell::UnGroupSelection()
{
- if ( IsGroupSelected() )
+ if ( IsGroupSelected(true) )
{
StartAllAction();
StartUndo( SwUndoId::START );
diff --git a/sw/source/uibase/shells/drwbassh.cxx b/sw/source/uibase/shells/drwbassh.cxx
index 8cafe328f74a..5beca065b30e 100644
--- a/sw/source/uibase/shells/drwbassh.cxx
+++ b/sw/source/uibase/shells/drwbassh.cxx
@@ -419,7 +419,7 @@ void SwDrawBaseShell::Execute(SfxRequest const &rReq)
break;
case SID_UNGROUP:
- if (pSh->IsGroupSelected() && pSh->IsUnGroupAllowed())
+ if (pSh->IsGroupSelected(true) && pSh->IsUnGroupAllowed())
{
pSh->UnGroupSelection();
rBind.Invalidate(SID_GROUP);
@@ -427,7 +427,7 @@ void SwDrawBaseShell::Execute(SfxRequest const &rReq)
break;
case SID_ENTER_GROUP:
- if (pSh->IsGroupSelected())
+ if (pSh->IsGroupSelected(false))
{
pSdrView->EnterMarkedGroup();
rBind.InvalidateAll(false);
@@ -731,11 +731,11 @@ void SwDrawBaseShell::GetState(SfxItemSet& rSet)
rSet.DisableItem( nWhich );
break;
case SID_UNGROUP:
- if ( !rSh.IsGroupSelected() || bProtected || !rSh.IsUnGroupAllowed() )
+ if ( !rSh.IsGroupSelected(true) || bProtected || !rSh.IsUnGroupAllowed() )
rSet.DisableItem( nWhich );
break;
case SID_ENTER_GROUP:
- if ( !rSh.IsGroupSelected() )
+ if ( !rSh.IsGroupSelected(false) )
rSet.DisableItem( nWhich );
break;
case SID_LEAVE_GROUP: