summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
Diffstat (limited to 'svx')
-rw-r--r--svx/source/svdraw/svdedtv.cxx8
-rw-r--r--svx/source/svdraw/svdpagv.cxx65
2 files changed, 41 insertions, 32 deletions
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index 47f5c971e543..c59b1e6be864 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -676,6 +676,14 @@ void SdrEditView::CheckPossibilities()
if (pNode1!=nullptr || pNode2!=nullptr) m_bMoveAllowed=false;
}
}
+
+ // Don't allow enter Diagrams
+ if (1 == nMarkCount && m_bGrpEnterPossible)
+ {
+ auto* pGroup(dynamic_cast<SdrObjGroup*>(GetMarkedObjectByIndex(0)));
+ if(nullptr != pGroup && pGroup->isDiagram())
+ m_bGrpEnterPossible = false;
+ }
}
diff --git a/svx/source/svdraw/svdpagv.cxx b/svx/source/svdraw/svdpagv.cxx
index 791a1fc30e70..022975f3e5b1 100644
--- a/svx/source/svdraw/svdpagv.cxx
+++ b/svx/source/svdraw/svdpagv.cxx
@@ -726,51 +726,52 @@ void SdrPageView::SetCurrentGroupAndList(SdrObject* pNewGroup, SdrObjList* pNewL
bool SdrPageView::EnterGroup(SdrObject* pObj)
{
- bool bRet(false);
+ if(!pObj || !pObj->IsGroupObject())
+ return false;
+
+ // Don't allow enter Diagrams
+ auto* pGroup(dynamic_cast<SdrObjGroup*>(pObj));
+ if(nullptr != pGroup && pGroup->isDiagram())
+ return false;
- if(pObj && pObj->IsGroupObject())
+ const bool bGlueInvalidate(GetView().ImpIsGlueVisible());
+
+ if (bGlueInvalidate)
{
- bool bGlueInvalidate(GetView().ImpIsGlueVisible());
+ GetView().GlueInvalidate();
+ }
- if(bGlueInvalidate)
- {
- GetView().GlueInvalidate();
- }
+ // deselect all
+ GetView().UnmarkAll();
- // deselect all
- GetView().UnmarkAll();
+ // set current group and list
+ SdrObjList* pNewObjList = pObj->GetSubList();
+ SetCurrentGroupAndList(pObj, pNewObjList);
- // set current group and list
- SdrObjList* pNewObjList = pObj->GetSubList();
- SetCurrentGroupAndList(pObj, pNewObjList);
+ // select contained object if only one object is contained,
+ // else select nothing and let the user decide what to do next
+ if(pNewObjList && pNewObjList->GetObjCount() == 1)
+ {
+ SdrObject* pFirstObject = pNewObjList->GetObj(0);
- // select contained object if only one object is contained,
- // else select nothing and let the user decide what to do next
- if(pNewObjList && pNewObjList->GetObjCount() == 1)
+ if(GetView().GetSdrPageView())
{
- SdrObject* pFirstObject = pNewObjList->GetObj(0);
-
- if(GetView().GetSdrPageView())
- {
- GetView().MarkObj(pFirstObject, GetView().GetSdrPageView());
- }
+ GetView().MarkObj(pFirstObject, GetView().GetSdrPageView());
}
+ }
- // build new handles
- GetView().AdjustMarkHdl();
-
- // invalidate only when view wants to visualize group entering
- InvalidateAllWin();
+ // build new handles
+ GetView().AdjustMarkHdl();
- if (bGlueInvalidate)
- {
- GetView().GlueInvalidate();
- }
+ // invalidate only when view wants to visualize group entering
+ InvalidateAllWin();
- bRet = true;
+ if (bGlueInvalidate)
+ {
+ GetView().GlueInvalidate();
}
- return bRet;
+ return true;
}
void SdrPageView::LeaveOneGroup()