summaryrefslogtreecommitdiff
path: root/sc/source/ui/drawfunc/drawsh.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/drawfunc/drawsh.cxx')
-rw-r--r--sc/source/ui/drawfunc/drawsh.cxx23
1 files changed, 19 insertions, 4 deletions
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx
index 93ece6954f56..1249cf839ef6 100644
--- a/sc/source/ui/drawfunc/drawsh.cxx
+++ b/sc/source/ui/drawfunc/drawsh.cxx
@@ -59,6 +59,9 @@
#include <svx/xflclit.hxx>
#include <svx/xflgrit.hxx>
#include <tools/UnitConversion.hxx>
+#include <vcl/unohelp2.hxx>
+
+using namespace css;
SFX_IMPL_INTERFACE(ScDrawShell, SfxShell)
@@ -313,17 +316,18 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq )
ExecuteTextAttrDlg( rReq );
break;
- case SID_DRAW_HLINK_EDIT:
+ case SID_EDIT_HYPERLINK:
if ( pSingleSelectedObj )
rViewData.GetDispatcher().Execute( SID_HYPERLINK_DIALOG );
break;
- case SID_DRAW_HLINK_DELETE:
+ case SID_REMOVE_HYPERLINK:
if ( pSingleSelectedObj )
SetHlinkForObject( pSingleSelectedObj, OUString() );
break;
case SID_OPEN_HYPERLINK:
+ case SID_COPY_HYPERLINK_LOCATION:
if ( nMarkCount == 1 )
{
SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
@@ -336,8 +340,19 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq )
}
ScMacroInfo* pInfo = ScDrawLayer::GetMacroInfo( pObj );
- if ( pInfo && !pInfo->GetHlink().isEmpty() )
- ScGlobal::OpenURL( pInfo->GetHlink(), OUString(), true );
+ if (pInfo && !pInfo->GetHlink().isEmpty())
+ {
+ if (nSlot == SID_OPEN_HYPERLINK)
+ {
+ ScGlobal::OpenURL(pInfo->GetHlink(), OUString(), true);
+ }
+ else if (nSlot == SID_COPY_HYPERLINK_LOCATION)
+ {
+ uno::Reference<datatransfer::clipboard::XClipboard> xClipboard
+ = GetViewShell()->GetWindow()->GetClipboard();
+ vcl::unohelper::TextDataObject::CopyStringTo(pInfo->GetHlink(), xClipboard);
+ }
+ }
}
break;