summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-07-03 15:53:00 +0100
committerAndras Timar <andras.timar@collabora.com>2015-07-08 12:04:16 +0200
commitef3c82bcc1f090aca519f91fe1923466ec08778d (patch)
tree4b659f8e789a725a7ac61b5a6275f9090a90c34c /svx
parent2809139435f790af35558f3c3e65f5ea1576368f (diff)
fix deselect of textbox on slides with images in underlying master
The original work of tdf#55430 tries to select an object under another one on the second click, but these images are unselectable so this fails. Red Hat has a whole new shiny bunch of templates which have such images in their masters. Check if the object is selectable before continuing (cherry picked from commit abbe4f9d64073d77c4be93b7c89c03d0651bacef) (cherry picked from commit 4189530530320a82adc785a4426735423a1188c1) Change-Id: I182abaf50e8bb1084c5819dc9e1ffd8b386a9e93 Reviewed-on: https://gerrit.libreoffice.org/16742 Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> Tested-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Diffstat (limited to 'svx')
-rw-r--r--svx/source/svdraw/svdmrkv.cxx51
1 files changed, 28 insertions, 23 deletions
diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx
index 66adc70e5167..31bebb140c9e 100644
--- a/svx/source/svdraw/svdmrkv.cxx
+++ b/svx/source/svdraw/svdmrkv.cxx
@@ -1184,6 +1184,33 @@ void SdrMarkView::SetRef2(const Point& rPt)
}
}
+bool SdrPageView::IsObjSelectable(SdrObject *pObj) const
+{
+ SdrLayerID nLay=pObj->GetLayer();
+ bool bRaus=!pObj->IsInserted(); // Obj deleted?
+ if (!pObj->Is3DObj()) {
+ bRaus=bRaus || pObj->GetPage()!=GetPage(); // Obj suddenly in different Page or Group
+ }
+ bRaus=bRaus || GetLockedLayers().IsSet(nLay) || // Layer locked?
+ !GetVisibleLayers().IsSet(nLay); // Layer invisible?
+
+ if( !bRaus )
+ bRaus = !pObj->IsVisible(); // invisible objects can not be selected
+
+ if (!bRaus) {
+ // Grouped objects can now be selected.
+ // After EnterGroup the higher-level objects,
+ // have to be deselected, though.
+ const SdrObjList* pOOL=pObj->GetObjList();
+ const SdrObjList* pVOL=GetObjList();
+ while (pOOL!=NULL && pOOL!=pVOL) {
+ pOOL=pOOL->GetUpList();
+ }
+ bRaus=pOOL!=pVOL;
+ }
+ return !bRaus;
+}
+
void SdrMarkView::CheckMarked()
{
for (size_t nm=GetMarkedObjectCount(); nm>0;) {
@@ -1191,29 +1218,7 @@ void SdrMarkView::CheckMarked()
SdrMark* pM=GetSdrMarkByIndex(nm);
SdrObject* pObj=pM->GetMarkedSdrObj();
SdrPageView* pPV=pM->GetPageView();
- SdrLayerID nLay=pObj->GetLayer();
- bool bRaus=!pObj->IsInserted(); // Obj deleted?
- if (!pObj->Is3DObj()) {
- bRaus=bRaus || pObj->GetPage()!=pPV->GetPage(); // Obj suddenly in different Page or Group
- }
- bRaus=bRaus || pPV->GetLockedLayers().IsSet(nLay) || // Layer locked?
- !pPV->GetVisibleLayers().IsSet(nLay); // Layer invisible?
-
- if( !bRaus )
- bRaus = !pObj->IsVisible(); // invisible objects can not be selected
-
- if (!bRaus) {
- // Grouped objects can now be selected.
- // After EnterGroup the higher-level objects,
- // have to be deselected, though.
- const SdrObjList* pOOL=pObj->GetObjList();
- const SdrObjList* pVOL=pPV->GetObjList();
- while (pOOL!=NULL && pOOL!=pVOL) {
- pOOL=pOOL->GetUpList();
- }
- bRaus=pOOL!=pVOL;
- }
-
+ bool bRaus=!pPV->IsObjSelectable(pObj);
if (bRaus)
{
GetMarkedObjectListWriteAccess().DeleteMark(nm);