diff options
author | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2021-08-23 10:17:56 +0200 |
---|---|---|
committer | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2021-08-23 11:58:48 +0200 |
commit | 75cd2b0fa71c73ae815b80d8e42328024ea63555 (patch) | |
tree | c6d6302993347002300714d697601feee814319d /sw/source/uibase/shells/drwbassh.cxx | |
parent | e701732725dd641741f39020d7dc965bc4db765d (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.cxx | 32 |
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); } |