diff options
-rw-r--r-- | sw/source/uibase/shells/drwbassh.cxx | 31 | ||||
-rw-r--r-- | xmloff/source/text/XMLTextFrameHyperlinkContext.cxx | 17 |
2 files changed, 40 insertions, 8 deletions
diff --git a/sw/source/uibase/shells/drwbassh.cxx b/sw/source/uibase/shells/drwbassh.cxx index e5b4bb177ae0..924877a876a5 100644 --- a/sw/source/uibase/shells/drwbassh.cxx +++ b/sw/source/uibase/shells/drwbassh.cxx @@ -799,11 +799,34 @@ 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 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); } diff --git a/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx b/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx index 278d6d953205..3901a010fbd9 100644 --- a/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx +++ b/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx @@ -113,14 +113,23 @@ SvXMLImportContextRef XMLTextFrameHyperlinkContext::CreateChildContext( SvXMLImportContext *pContext = nullptr; XMLTextFrameContext *pTextFrameContext = nullptr; - if( XML_NAMESPACE_DRAW == nPrefix ) + if( XML_NAMESPACE_DRAW == nPrefix || XML_NAMESPACE_DR3D == nPrefix) { - if( IsXMLToken( rLocalName, XML_FRAME ) ) + if( XML_NAMESPACE_DRAW == nPrefix && IsXMLToken( rLocalName, XML_FRAME ) ) pTextFrameContext = new XMLTextFrameContext( GetImport(), nPrefix, rLocalName, xAttrList, eDefaultAnchorType ); - else if (IsXMLToken(rLocalName, XML_CUSTOM_SHAPE) || IsXMLToken(rLocalName, XML_PATH) - || IsXMLToken(rLocalName, XML_ELLIPSE) || IsXMLToken(rLocalName, XML_LINE)) + else if ((XML_NAMESPACE_DRAW == nPrefix && ( + IsXMLToken(rLocalName, XML_CUSTOM_SHAPE) || IsXMLToken(rLocalName, XML_PATH) + || IsXMLToken(rLocalName, XML_ELLIPSE) || IsXMLToken(rLocalName, XML_LINE) + || IsXMLToken(rLocalName, XML_RECT) || IsXMLToken(rLocalName, XML_CAPTION) + || IsXMLToken(rLocalName, XML_POLYGON) || IsXMLToken(rLocalName, XML_POLYLINE) + || IsXMLToken(rLocalName, XML_MEASURE) || IsXMLToken(rLocalName, XML_CIRCLE) + || IsXMLToken(rLocalName, XML_CONNECTOR) || IsXMLToken(rLocalName, XML_CONTROL) + || IsXMLToken(rLocalName, XML_PAGE_THUMBNAIL) || IsXMLToken(rLocalName, XML_G) + )) + || (XML_NAMESPACE_DR3D == nPrefix && IsXMLToken(rLocalName, XML_SCENE)) + ) { Reference<XShapes> xShapes; SvXMLShapeContext* pShapeContext |