diff options
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/svdedtv.cxx | 8 | ||||
-rw-r--r-- | svx/source/svdraw/svdpagv.cxx | 65 |
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() |