summaryrefslogtreecommitdiff
path: root/sw/source/uibase/shells/drwbassh.cxx
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>2021-08-23 10:17:56 +0200
committerSamuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>2021-08-23 11:58:48 +0200
commit75cd2b0fa71c73ae815b80d8e42328024ea63555 (patch)
treec6d6302993347002300714d697601feee814319d /sw/source/uibase/shells/drwbassh.cxx
parente701732725dd641741f39020d7dc965bc4db765d (diff)
tdf#143736 Load hyperlink from more shapes
And limit the shape types which can have a hyperlink to those known to work. Change-Id: I3d3522bea1e756dad8ddc2041e6588a367f42a7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120861 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
Diffstat (limited to 'sw/source/uibase/shells/drwbassh.cxx')
-rw-r--r--sw/source/uibase/shells/drwbassh.cxx32
1 files changed, 28 insertions, 4 deletions
diff --git a/sw/source/uibase/shells/drwbassh.cxx b/sw/source/uibase/shells/drwbassh.cxx
index f6e077520719..d0f1a5900e5d 100644
--- a/sw/source/uibase/shells/drwbassh.cxx
+++ b/sw/source/uibase/shells/drwbassh.cxx
@@ -856,11 +856,35 @@ void SwDrawBaseShell::GetState(SfxItemSet& rSet)
{
if (pSdrView->GetMarkedObjectCount() != 1)
rSet.DisableItem(nWhich);
- else if (nWhich == SID_OPEN_HYPERLINK || nWhich == SID_REMOVE_HYPERLINK
- || nWhich == SID_EDIT_HYPERLINK || nWhich == SID_COPY_HYPERLINK_LOCATION)
+
+ const SdrMarkList& rMarkList = pSdrView->GetMarkedObjectList();
+ SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
+ sal_uInt16 nObjType = pObj->GetObjIdentifier();
+
+ // Only enable hyperlink for the following types
+ switch (nObjType)
+ {
+ case OBJ_PATHFILL:
+ case OBJ_SECT:
+ case OBJ_LINE:
+ case OBJ_CUSTOMSHAPE:
+ case OBJ_TEXT:
+ case OBJ_RECT:
+ case OBJ_CAPTION:
+ case OBJ_POLY:
+ case OBJ_PLIN:
+ case E3D_SCENE_ID:
+ case OBJ_MEASURE:
+ case OBJ_EDGE:
+ break;
+ default:
+ rSet.DisableItem(nWhich);
+ break;
+ }
+
+ if (nWhich == SID_OPEN_HYPERLINK || nWhich == SID_REMOVE_HYPERLINK
+ || nWhich == SID_EDIT_HYPERLINK || nWhich == SID_COPY_HYPERLINK_LOCATION)
{
- const SdrMarkList& rMarkList = pSdrView->GetMarkedObjectList();
- SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
if (pObj->getHyperlink().isEmpty())
rSet.DisableItem(nWhich);
}