summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/source/uibase/shells/drwbassh.cxx31
-rw-r--r--xmloff/source/text/XMLTextFrameHyperlinkContext.cxx17
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