summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2019-08-06 12:27:03 +0200
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2019-08-06 13:33:49 +0200
commita8b400ee8f9a7c80905afe147b7c9b991c6742cd (patch)
tree2f95a6c8f7ad71edb00cf2f7c74d59b06d55afa7 /sc
parentbb4015fe845869ae6c70947ac0d52f0ce8043d1b (diff)
Add "Copy hyperlink location" to sc context menus
Change-Id: I93840c7a7e6bbbba0c5dedb6fa460a46d1785e80 Reviewed-on: https://gerrit.libreoffice.org/77018 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'sc')
-rw-r--r--sc/sdi/drtxtob.sdi1
-rw-r--r--sc/sdi/editsh.sdi1
-rw-r--r--sc/source/ui/drawfunc/drtxtob.cxx15
-rw-r--r--sc/source/ui/view/editsh.cxx13
-rw-r--r--sc/uiconfig/scalc/popupmenu/celledit.xml1
-rw-r--r--sc/uiconfig/scalc/popupmenu/drawtext.xml1
6 files changed, 32 insertions, 0 deletions
diff --git a/sc/sdi/drtxtob.sdi b/sc/sdi/drtxtob.sdi
index 89be1b24c3ee..bbc68728c947 100644
--- a/sc/sdi/drtxtob.sdi
+++ b/sc/sdi/drtxtob.sdi
@@ -131,6 +131,7 @@ interface TableDrawText
SID_HYPERLINK_GETLINK [ StateMethod = GetState; Export = FALSE; ]
SID_OPEN_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
SID_EDIT_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_COPY_HYPERLINK_LOCATION [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
SID_REMOVE_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
SID_ENABLE_HYPHENATION [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
diff --git a/sc/sdi/editsh.sdi b/sc/sdi/editsh.sdi
index 5718fc63407e..934e6e8a6535 100644
--- a/sc/sdi/editsh.sdi
+++ b/sc/sdi/editsh.sdi
@@ -80,6 +80,7 @@ interface TableText
SID_HYPERLINK_GETLINK [ StateMethod = GetState; Export = FALSE; ]
SID_OPEN_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
SID_EDIT_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_COPY_HYPERLINK_LOCATION [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
SID_REMOVE_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
SID_TRANSLITERATE_SENTENCE_CASE [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ]
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx
index 58943add8cbd..334f1933a88b 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -58,6 +58,7 @@
#include <svx/svxdlg.hxx>
#include <vcl/EnumContext.hxx>
+#include <vcl/unohelp2.hxx>
#include <sc.hrc>
#include <globstr.hrc>
@@ -310,6 +311,18 @@ void ScDrawTextObjectBar::Execute( SfxRequest &rReq )
}
break;
+ case SID_COPY_HYPERLINK_LOCATION:
+ {
+ const SvxFieldData* pField = pOutView->GetFieldAtCursor();
+ if (const SvxURLField* pURLField = dynamic_cast<const SvxURLField*>(pField))
+ {
+ uno::Reference<datatransfer::clipboard::XClipboard> xClipboard
+ = pOutView->GetWindow()->GetClipboard();
+ vcl::unohelper::TextDataObject::CopyStringTo(pURLField->GetURL(), xClipboard);
+ }
+ }
+ break;
+
case SID_REMOVE_HYPERLINK:
{
URLFieldHelper::RemoveURLField(pOutliner, pOutView);
@@ -393,6 +406,7 @@ void ScDrawTextObjectBar::GetState( SfxItemSet& rSet )
if (rSet.GetItemState(SID_OPEN_HYPERLINK) != SfxItemState::UNKNOWN
|| rSet.GetItemState(SID_EDIT_HYPERLINK) != SfxItemState::UNKNOWN
+ || rSet.GetItemState(SID_COPY_HYPERLINK_LOCATION) != SfxItemState::UNKNOWN
|| rSet.GetItemState(SID_REMOVE_HYPERLINK) != SfxItemState::UNKNOWN)
{
SdrView* pView = pViewData->GetScDrawView();
@@ -401,6 +415,7 @@ void ScDrawTextObjectBar::GetState( SfxItemSet& rSet )
{
rSet.DisableItem( SID_OPEN_HYPERLINK );
rSet.DisableItem( SID_EDIT_HYPERLINK );
+ rSet.DisableItem( SID_COPY_HYPERLINK_LOCATION );
rSet.DisableItem( SID_REMOVE_HYPERLINK );
}
}
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
index 7140f7499c06..3d8cf4c88312 100644
--- a/sc/source/ui/view/editsh.cxx
+++ b/sc/source/ui/view/editsh.cxx
@@ -56,6 +56,7 @@
#include <svl/whiter.hxx>
#include <sot/formats.hxx>
#include <vcl/transfer.hxx>
+#include <vcl/unohelp2.hxx>
#include <svl/stritem.hxx>
#include <editsh.hxx>
@@ -636,6 +637,17 @@ void ScEditShell::Execute( SfxRequest& rReq )
SID_HYPERLINK_DIALOG);
}
break;
+ case SID_COPY_HYPERLINK_LOCATION:
+ {
+ const SvxFieldData* pField = pEditView->GetFieldAtCursor();
+ if (const SvxURLField* pURLField = dynamic_cast<const SvxURLField*>(pField))
+ {
+ uno::Reference<datatransfer::clipboard::XClipboard> xClipboard
+ = pEditView->GetWindow()->GetClipboard();
+ vcl::unohelper::TextDataObject::CopyStringTo(pURLField->GetURL(), xClipboard);
+ }
+ }
+ break;
case SID_REMOVE_HYPERLINK:
{
// Ensure the field is selected first
@@ -775,6 +787,7 @@ void ScEditShell::GetState( SfxItemSet& rSet )
case SID_OPEN_HYPERLINK:
case SID_EDIT_HYPERLINK:
+ case SID_COPY_HYPERLINK_LOCATION:
case SID_REMOVE_HYPERLINK:
{
if ( !GetURLField() )
diff --git a/sc/uiconfig/scalc/popupmenu/celledit.xml b/sc/uiconfig/scalc/popupmenu/celledit.xml
index 526b47df2453..12bac415d953 100644
--- a/sc/uiconfig/scalc/popupmenu/celledit.xml
+++ b/sc/uiconfig/scalc/popupmenu/celledit.xml
@@ -26,6 +26,7 @@
<menu:menuseparator/>
<menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/>
<menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/>
<menu:menuitem menu:id=".uno:RemoveHyperlink"/>
<menu:menuitem menu:id=".uno:ThesaurusFromContext"/>
<menu:menuseparator/>
diff --git a/sc/uiconfig/scalc/popupmenu/drawtext.xml b/sc/uiconfig/scalc/popupmenu/drawtext.xml
index d05b1bf8a57d..62a4f9141cee 100644
--- a/sc/uiconfig/scalc/popupmenu/drawtext.xml
+++ b/sc/uiconfig/scalc/popupmenu/drawtext.xml
@@ -25,6 +25,7 @@
<menu:menuseparator/>
<menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/>
<menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/>
<menu:menuitem menu:id=".uno:RemoveHyperlink"/>
<menu:menuitem menu:id=".uno:ThesaurusFromContext"/>
<menu:menuseparator/>