include/svx/svxids.hrc | 1 officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu | 11 ++ sc/sdi/drawsh.sdi | 1 sc/sdi/drtxtob.sdi | 1 sc/sdi/editsh.sdi | 1 sc/source/ui/drawfunc/drawsh.cxx | 1 sc/source/ui/drawfunc/drawsh2.cxx | 6 + sc/source/ui/drawfunc/drtxtob.cxx | 9 ++ sc/source/ui/view/editsh.cxx | 16 ++++ sc/uiconfig/scalc/popupmenu/celledit.xml | 1 sc/uiconfig/scalc/popupmenu/draw.xml | 1 sc/uiconfig/scalc/popupmenu/drawtext.xml | 1 sc/uiconfig/scalc/popupmenu/graphic.xml | 1 sc/uiconfig/scalc/popupmenu/media.xml | 1 sd/sdi/_drvwsh.sdi | 5 + sd/source/ui/view/drviews2.cxx | 9 ++ sd/source/ui/view/drviewsf.cxx | 12 +++ sd/uiconfig/sdraw/popupmenu/drawtext.xml | 1 sd/uiconfig/sdraw/popupmenu/table.xml | 1 sd/uiconfig/simpress/popupmenu/drawtext.xml | 1 sd/uiconfig/simpress/popupmenu/table.xml | 1 svx/sdi/svx.sdi | 17 ++++ sw/sdi/_drwbase.sdi | 6 + sw/sdi/_textsh.sdi | 6 + sw/source/uibase/shells/textsh1.cxx | 39 ++++++++++ sw/uiconfig/sglobal/popupmenu/draw.xml | 1 sw/uiconfig/sglobal/popupmenu/drawtext.xml | 1 sw/uiconfig/sglobal/popupmenu/table.xml | 1 sw/uiconfig/sglobal/popupmenu/text.xml | 1 sw/uiconfig/sweb/popupmenu/table.xml | 1 sw/uiconfig/sweb/popupmenu/text.xml | 1 sw/uiconfig/swform/popupmenu/draw.xml | 1 sw/uiconfig/swform/popupmenu/drawtext.xml | 1 sw/uiconfig/swform/popupmenu/table.xml | 1 sw/uiconfig/swform/popupmenu/text.xml | 1 sw/uiconfig/swreport/popupmenu/draw.xml | 1 sw/uiconfig/swreport/popupmenu/drawtext.xml | 1 sw/uiconfig/swreport/popupmenu/table.xml | 1 sw/uiconfig/swreport/popupmenu/text.xml | 1 sw/uiconfig/swriter/popupmenu/draw.xml | 1 sw/uiconfig/swriter/popupmenu/drawtext.xml | 1 sw/uiconfig/swriter/popupmenu/table.xml | 1 sw/uiconfig/swriter/popupmenu/text.xml | 1 sw/uiconfig/swxform/popupmenu/draw.xml | 1 sw/uiconfig/swxform/popupmenu/drawtext.xml | 1 sw/uiconfig/swxform/popupmenu/table.xml | 1 sw/uiconfig/swxform/popupmenu/text.xml | 1 47 files changed, 172 insertions(+)
New commits: commit 24f3c68d308ad8951493c84a5c517f7f18b0d62d Author: Samuel Mehrbrodt <samuel.mehrbr...@collabora.com> AuthorDate: Mon Jul 21 11:47:16 2025 +0200 Commit: Samuel Mehrbrodt <samuel.mehrbr...@collabora.com> CommitDate: Mon Jul 21 15:40:30 2025 +0200 tdf#167544 Add 'Insert Hyperlink' to context menu when text is selected This adds a 'Insert Hyperlink' entry to the context menu to allow quick hyperlink creation when some text is selected. The entry will not be displayed when an already existing link is selected or when no text is selected at all. Change-Id: I954c9a3fe417548f9291e82d4504763eb71b998d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188106 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@collabora.com> diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index 4885e058c01a..9179d14a76c0 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -549,6 +549,7 @@ class XFillGradientItem; // CAUTION! Range <457 .. 457> used by EditEngine (!) +#define SID_INSERT_HYPERLINK ( SID_SVX_START + 458 ) #define SID_REMOVE_HYPERLINK ( SID_SVX_START + 459 ) #define SID_ATTR_ALIGN_INDENT ( SID_SVX_START + 460 ) #define SID_DEC_INDENT ( SID_SVX_START + 461 ) diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index cd0cde2b0958..744956108ded 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -3455,6 +3455,17 @@ bit 3 (0x8): #define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8 <value>1</value> </prop> </node> + <node oor:name=".uno:InsertHyperlink" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">~Hyperlink</value> + </prop> + <prop oor:name="PopupLabel" oor:type="xs:string"> + <value xml:lang="en-US">Insert Hyperlink...</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> <node oor:name=".uno:EditHyperlink" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Hyperlink</value> diff --git a/sc/sdi/drawsh.sdi b/sc/sdi/drawsh.sdi index cf840a07be43..03c12d686240 100644 --- a/sc/sdi/drawsh.sdi +++ b/sc/sdi/drawsh.sdi @@ -212,6 +212,7 @@ interface TableDraw SID_FONTWORK_KERN_CHARACTER_PAIRS [ ExecMethod = ExecDrawFunc ; StateMethod = GetDrawFuncState ; ] SID_FONTWORK_CHARACTER_SPACING_DIALOG [ ExecMethod = ExecDrawFunc ; StateMethod = GetDrawFuncState ; ] + SID_INSERT_HYPERLINK [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawFuncState; ] SID_EDIT_HYPERLINK [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawFuncState; ] SID_REMOVE_HYPERLINK [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawFuncState; ] SID_OPEN_HYPERLINK [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawFuncState; ] diff --git a/sc/sdi/drtxtob.sdi b/sc/sdi/drtxtob.sdi index a4df9af69108..5302b5bf1b63 100644 --- a/sc/sdi/drtxtob.sdi +++ b/sc/sdi/drtxtob.sdi @@ -116,6 +116,7 @@ interface TableDrawText SID_HYPERLINK_SETLINK [ ExecMethod = Execute; ] SID_HYPERLINK_GETLINK [ StateMethod = GetState; ] SID_OPEN_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; ] + SID_INSERT_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; ] SID_EDIT_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; ] SID_COPY_HYPERLINK_LOCATION [ ExecMethod = Execute; StateMethod = GetState; ] SID_REMOVE_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; ] diff --git a/sc/sdi/editsh.sdi b/sc/sdi/editsh.sdi index 5dd18e81f3a4..aee93910dce5 100644 --- a/sc/sdi/editsh.sdi +++ b/sc/sdi/editsh.sdi @@ -74,6 +74,7 @@ interface TableText SID_HYPERLINK_SETLINK [ ExecMethod = Execute; ] SID_HYPERLINK_GETLINK [ StateMethod = GetState; ] + SID_INSERT_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; ] SID_EDIT_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; ] SID_COPY_HYPERLINK_LOCATION [ ExecMethod = Execute; StateMethod = GetState; ] SID_REMOVE_HYPERLINK [ ExecMethod = Execute; StateMethod = GetState; ] diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx index e466ba00b4f7..e10c8b61afe8 100644 --- a/sc/source/ui/drawfunc/drawsh.cxx +++ b/sc/source/ui/drawfunc/drawsh.cxx @@ -286,6 +286,7 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) ExecuteTextAttrDlg( rReq ); break; + case SID_INSERT_HYPERLINK: case SID_EDIT_HYPERLINK: if ( pSingleSelectedObj ) rViewData.GetDispatcher().Execute( SID_HYPERLINK_DIALOG ); diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx index 4bf32a50815d..aa707cfd191a 100644 --- a/sc/source/ui/drawfunc/drawsh2.cxx +++ b/sc/source/ui/drawfunc/drawsh2.cxx @@ -224,6 +224,7 @@ void ScDrawShell::GetDrawFuncState( SfxItemSet& rSet ) // disable functions { // no hyperlink options for a selected group rSet.DisableItem( SID_EDIT_HYPERLINK ); + rSet.DisableItem( SID_INSERT_HYPERLINK ); rSet.DisableItem( SID_REMOVE_HYPERLINK ); rSet.DisableItem( SID_OPEN_HYPERLINK ); rSet.DisableItem( SID_COPY_HYPERLINK_LOCATION ); @@ -240,6 +241,10 @@ void ScDrawShell::GetDrawFuncState( SfxItemSet& rSet ) // disable functions rSet.DisableItem( SID_REMOVE_HYPERLINK ); rSet.DisableItem( SID_COPY_HYPERLINK_LOCATION ); } + else + { + rSet.DisableItem( SID_INSERT_HYPERLINK ); + } SdrLayerID nLayerID = pObj->GetLayer(); if ( nLayerID != SC_LAYER_INTERN ) bCanRename = true; // #i51351# anything except internal objects can be renamed @@ -305,6 +310,7 @@ void ScDrawShell::GetDrawFuncState( SfxItemSet& rSet ) // disable functions rSet.DisableItem( SID_ORIGINALSIZE ); rSet.DisableItem( SID_FITCELLSIZE ); rSet.DisableItem( SID_ATTR_TRANSFORM ); + rSet.DisableItem( SID_INSERT_HYPERLINK ); } if ( rSet.GetItemState( SID_ENABLE_HYPHENATION ) != SfxItemState::UNKNOWN ) diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx index 3e1ecfabcc70..fa40da9828c6 100644 --- a/sc/source/ui/drawfunc/drtxtob.cxx +++ b/sc/source/ui/drawfunc/drtxtob.cxx @@ -299,6 +299,10 @@ void ScDrawTextObjectBar::Execute( SfxRequest &rReq ) } break; + case SID_INSERT_HYPERLINK: + mrViewData.GetViewShell()->GetViewFrame().GetDispatcher()->Execute(SID_HYPERLINK_DIALOG); + break; + case SID_EDIT_HYPERLINK: { // Ensure the field is selected first @@ -403,6 +407,7 @@ void ScDrawTextObjectBar::GetState( SfxItemSet& rSet ) } if (rSet.GetItemState(SID_OPEN_HYPERLINK) != SfxItemState::UNKNOWN + || rSet.GetItemState(SID_INSERT_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) @@ -415,6 +420,10 @@ void ScDrawTextObjectBar::GetState( SfxItemSet& rSet ) rSet.DisableItem( SID_COPY_HYPERLINK_LOCATION ); rSet.DisableItem( SID_REMOVE_HYPERLINK ); } + else + { + rSet.DisableItem( SID_INSERT_HYPERLINK ); + } } if( rSet.GetItemState( SID_TRANSLITERATE_HALFWIDTH ) != SfxItemState::UNKNOWN ) diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx index f15ee1903f12..75080dce163e 100644 --- a/sc/source/ui/view/editsh.cxx +++ b/sc/source/ui/view/editsh.cxx @@ -639,6 +639,12 @@ void ScEditShell::Execute( SfxRequest& rReq ) } } break; + case SID_INSERT_HYPERLINK: + { + rViewData.GetViewShell()->GetViewFrame().GetDispatcher()->Execute( + SID_HYPERLINK_DIALOG); + } + break; case SID_EDIT_HYPERLINK: { // Ensure the field is selected first @@ -823,6 +829,16 @@ void ScEditShell::GetState( SfxItemSet& rSet ) } break; + case SID_INSERT_HYPERLINK: + { + // Disable insert hyperlink if no text is selected or cursor is at a URL field + ESelection aSel( pActiveView->GetSelection() ); + if (!aSel.HasRange() || URLFieldHelper::IsCursorAtURLField(*pEditView, + /*AlsoCheckBeforeCursor=*/true)) + rSet.DisableItem (nWhich); + } + break; + case SID_EDIT_HYPERLINK: case SID_COPY_HYPERLINK_LOCATION: case SID_REMOVE_HYPERLINK: diff --git a/sc/uiconfig/scalc/popupmenu/celledit.xml b/sc/uiconfig/scalc/popupmenu/celledit.xml index 12bac415d953..36aad7336769 100644 --- a/sc/uiconfig/scalc/popupmenu/celledit.xml +++ b/sc/uiconfig/scalc/popupmenu/celledit.xml @@ -24,6 +24,7 @@ </menu:menupopup> </menu:menu> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sc/uiconfig/scalc/popupmenu/draw.xml b/sc/uiconfig/scalc/popupmenu/draw.xml index 41167edf00fd..5e56bfe3713a 100644 --- a/sc/uiconfig/scalc/popupmenu/draw.xml +++ b/sc/uiconfig/scalc/popupmenu/draw.xml @@ -58,6 +58,7 @@ <menu:menuitem menu:id=".uno:RenameObject"/> <menu:menuitem menu:id=".uno:ObjectTitleDescription"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sc/uiconfig/scalc/popupmenu/drawtext.xml b/sc/uiconfig/scalc/popupmenu/drawtext.xml index d8cdc15e603e..7034a07e4f52 100644 --- a/sc/uiconfig/scalc/popupmenu/drawtext.xml +++ b/sc/uiconfig/scalc/popupmenu/drawtext.xml @@ -23,6 +23,7 @@ <menu:menuitem menu:id=".uno:FontDialog"/> <menu:menuitem menu:id=".uno:ParagraphDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sc/uiconfig/scalc/popupmenu/graphic.xml b/sc/uiconfig/scalc/popupmenu/graphic.xml index 10f813f1e702..9d5abcc348b3 100644 --- a/sc/uiconfig/scalc/popupmenu/graphic.xml +++ b/sc/uiconfig/scalc/popupmenu/graphic.xml @@ -67,6 +67,7 @@ <menu:menuitem menu:id=".uno:RenameObject"/> <menu:menuitem menu:id=".uno:ObjectTitleDescription"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sc/uiconfig/scalc/popupmenu/media.xml b/sc/uiconfig/scalc/popupmenu/media.xml index d5453747eb68..3a1864c340fb 100644 --- a/sc/uiconfig/scalc/popupmenu/media.xml +++ b/sc/uiconfig/scalc/popupmenu/media.xml @@ -42,6 +42,7 @@ <menu:menuitem menu:id=".uno:RenameObject"/> <menu:menuitem menu:id=".uno:ObjectTitleDescription"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi index 2aee9b626abc..7af2d314744c 100644 --- a/sd/sdi/_drvwsh.sdi +++ b/sd/sdi/_drvwsh.sdi @@ -1598,6 +1598,11 @@ interface DrawView ExecMethod = FuTemporary ; StateMethod = GetAttrState ; ] + SID_INSERT_HYPERLINK // ole : no, status : ? + [ + ExecMethod = FuTemporary ; + StateMethod = GetAttrState ; + ] SID_RULER_PAGE_POS // ole : no, status : ? [ ExecMethod = ExecRuler ; diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index 29319c3406ba..b89609a05510 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -2859,6 +2859,15 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) } break; + case SID_INSERT_HYPERLINK : + { + GetViewFrame()->GetDispatcher()->Execute( SID_HYPERLINK_DIALOG ); + + Cancel(); + rReq.Done (); + } + break; + case SID_OPEN_HYPERLINK: { OutlinerView* pOutView = mpDrawView->GetTextEditOutlinerView(); diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx index 02b929aad44f..54893d0fdcc2 100644 --- a/sd/source/ui/view/drviewsf.cxx +++ b/sd/source/ui/view/drviewsf.cxx @@ -538,6 +538,18 @@ void DrawViewShell::GetAttrState( SfxItemSet& rSet ) } break; + case SID_INSERT_HYPERLINK: + { + // Disable when no text selected or when cursor is at URL field + if (!HasSelection(true) + || URLFieldHelper::IsCursorAtURLField(mpDrawView->GetTextEditOutlinerView(), + /*AlsoCheckBeforeCursor=*/true)) + { + rSet.DisableItem(nWhich); + } + } + break; + case SID_STYLE_WATERCAN: { std::unique_ptr<SfxUInt16Item> pFamilyItem; diff --git a/sd/uiconfig/sdraw/popupmenu/drawtext.xml b/sd/uiconfig/sdraw/popupmenu/drawtext.xml index 3cb30bc3f5b2..d233708d06a6 100644 --- a/sd/uiconfig/sdraw/popupmenu/drawtext.xml +++ b/sd/uiconfig/sdraw/popupmenu/drawtext.xml @@ -18,6 +18,7 @@ <menu:menuitem menu:id=".uno:ParagraphDialog"/> <menu:menuitem menu:id=".uno:OutlineBullet"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sd/uiconfig/sdraw/popupmenu/table.xml b/sd/uiconfig/sdraw/popupmenu/table.xml index 7ada41804675..8abd39bbcd56 100644 --- a/sd/uiconfig/sdraw/popupmenu/table.xml +++ b/sd/uiconfig/sdraw/popupmenu/table.xml @@ -49,6 +49,7 @@ <menu:menuitem menu:id=".uno:FontDialog"/> <menu:menuitem menu:id=".uno:ParagraphDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sd/uiconfig/simpress/popupmenu/drawtext.xml b/sd/uiconfig/simpress/popupmenu/drawtext.xml index d0b1a95280bb..43d359ea98ee 100644 --- a/sd/uiconfig/simpress/popupmenu/drawtext.xml +++ b/sd/uiconfig/simpress/popupmenu/drawtext.xml @@ -18,6 +18,7 @@ <menu:menuitem menu:id=".uno:ParagraphDialog"/> <menu:menuitem menu:id=".uno:OutlineBullet"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sd/uiconfig/simpress/popupmenu/table.xml b/sd/uiconfig/simpress/popupmenu/table.xml index 7ada41804675..8abd39bbcd56 100644 --- a/sd/uiconfig/simpress/popupmenu/table.xml +++ b/sd/uiconfig/simpress/popupmenu/table.xml @@ -49,6 +49,7 @@ <menu:menuitem menu:id=".uno:FontDialog"/> <menu:menuitem menu:id=".uno:ParagraphDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index dba7ddef043a..b36d57c17c83 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -9712,6 +9712,23 @@ SfxVoidItem OpenHyperlinkOnCursor SID_OPEN_HYPERLINK GroupId = SfxGroupId::Edit; ] +SfxVoidItem InsertHyperlink SID_INSERT_HYPERLINK +() +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = SfxGroupId::Insert; +] + SfxVoidItem EditHyperlink SID_EDIT_HYPERLINK (SfxInt32Item PositionX FN_PARAM_1, SfxInt32Item PositionY FN_PARAM_2) [ diff --git a/sw/sdi/_drwbase.sdi b/sw/sdi/_drwbase.sdi index 4981490ec22b..4fa17e1f96eb 100644 --- a/sw/sdi/_drwbase.sdi +++ b/sw/sdi/_drwbase.sdi @@ -149,6 +149,12 @@ interface BaseTextDrawBase StateMethod = GetState; DisableFlags="SfxDisableFlags::SwOnProtectedCursor"; ] + SID_INSERT_HYPERLINK + [ + ExecMethod = Execute; + StateMethod = GetState; + DisableFlags="SfxDisableFlags::SwOnProtectedCursor"; + ] SID_HYPERLINK_SETLINK // status() [ ExecMethod = Execute ; diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi index f7b0c2c9f4bc..543ae83111d9 100644 --- a/sw/sdi/_textsh.sdi +++ b/sw/sdi/_textsh.sdi @@ -402,6 +402,12 @@ interface BaseText ExecMethod = Execute ; StateMethod = GetState; ] + SID_INSERT_HYPERLINK + [ + ExecMethod = Execute ; + StateMethod = GetState; + DisableFlags="SfxDisableFlags::SwOnProtectedCursor"; + ] SID_RUBY_DIALOG [ ExecMethod = Execute ; diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx index c8a2bce3c1fc..a6f6b4eee6cd 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -2034,6 +2034,13 @@ void SwTextShell::Execute(SfxRequest &rReq) rWrtSh.MoveParagraph(SwNodeOffset(-1)); rReq.Done(); break; + case SID_INSERT_HYPERLINK: + { + SfxRequest aReq(SID_HYPERLINK_DIALOG, SfxCallMode::SLOT, SfxGetpApp()->GetPool()); + GetView().GetViewFrame().ExecuteSlot( aReq); + rReq.Ignore(); + } + break; case SID_RUBY_DIALOG: case SID_HYPERLINK_DIALOG: { @@ -3973,6 +3980,38 @@ void SwTextShell::GetState( SfxItemSet &rSet ) rSet.DisableItem(nWhich); } break; + case SID_INSERT_HYPERLINK: + { + if (!rSh.HasSelection()) + { + rSet.DisableItem(nWhich); + break; + } + if (!rSh.HasReadonlySel()) + { + SfxItemSetFixed<RES_TXTATR_INETFMT, RES_TXTATR_INETFMT> aSet(GetPool()); + rSh.GetCurAttr(aSet); + + // If a hyperlink is selected, either alone or along with other text... + if (SfxItemState::SET <= aSet.GetItemState(RES_TXTATR_INETFMT) + || aSet.GetItemState(RES_TXTATR_INETFMT) == SfxItemState::INVALID) + { + rSet.DisableItem(nWhich); + } + + // is the cursor at the beginning of a hyperlink? + const SwTextNode* pTextNd = rSh.GetCursor()->GetPointNode().GetTextNode(); + if (pTextNd && !rSh.HasSelection()) + { + const sal_Int32 nIndex = rSh.GetCursor()->Start()->GetContentIndex(); + const SwTextAttr* pINetFmt + = pTextNd->GetTextAttrAt(nIndex, RES_TXTATR_INETFMT); + if (pINetFmt && !pINetFmt->GetINetFormat().GetValue().isEmpty()) + rSet.DisableItem(nWhich); + } + } + } + break; case SID_REMOVE_HYPERLINK: { if (!rSh.HasReadonlySel()) diff --git a/sw/uiconfig/sglobal/popupmenu/draw.xml b/sw/uiconfig/sglobal/popupmenu/draw.xml index fe8349419653..d94cc2f78a7b 100644 --- a/sw/uiconfig/sglobal/popupmenu/draw.xml +++ b/sw/uiconfig/sglobal/popupmenu/draw.xml @@ -72,6 +72,7 @@ <menu:menuitem menu:id=".uno:EnterGroup"/> <menu:menuitem menu:id=".uno:LeaveGroup"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/sglobal/popupmenu/drawtext.xml b/sw/uiconfig/sglobal/popupmenu/drawtext.xml index 07a09cccae9d..2562b93114b8 100644 --- a/sw/uiconfig/sglobal/popupmenu/drawtext.xml +++ b/sw/uiconfig/sglobal/popupmenu/drawtext.xml @@ -25,6 +25,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:ThesaurusFromContext"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/sglobal/popupmenu/table.xml b/sw/uiconfig/sglobal/popupmenu/table.xml index aee5e19d5c1d..c999d65fc2e1 100644 --- a/sw/uiconfig/sglobal/popupmenu/table.xml +++ b/sw/uiconfig/sglobal/popupmenu/table.xml @@ -135,6 +135,7 @@ <menu:menuitem menu:id=".uno:IndexEntryDialog"/> <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/sglobal/popupmenu/text.xml b/sw/uiconfig/sglobal/popupmenu/text.xml index a9046d728686..b25c236ca141 100644 --- a/sw/uiconfig/sglobal/popupmenu/text.xml +++ b/sw/uiconfig/sglobal/popupmenu/text.xml @@ -83,6 +83,7 @@ <menu:menuitem menu:id=".uno:NextTrackedChange"/> <menu:menuitem menu:id=".uno:PreviousTrackedChange"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/sweb/popupmenu/table.xml b/sw/uiconfig/sweb/popupmenu/table.xml index 05b67ac1d72b..3ab405ecaad4 100644 --- a/sw/uiconfig/sweb/popupmenu/table.xml +++ b/sw/uiconfig/sweb/popupmenu/table.xml @@ -134,6 +134,7 @@ <menu:menuitem menu:id=".uno:IndexEntryDialog"/> <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/sweb/popupmenu/text.xml b/sw/uiconfig/sweb/popupmenu/text.xml index 209510f5fe6c..46e59aafdcab 100644 --- a/sw/uiconfig/sweb/popupmenu/text.xml +++ b/sw/uiconfig/sweb/popupmenu/text.xml @@ -82,6 +82,7 @@ <menu:menuitem menu:id=".uno:NextTrackedChange"/> <menu:menuitem menu:id=".uno:PreviousTrackedChange"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swform/popupmenu/draw.xml b/sw/uiconfig/swform/popupmenu/draw.xml index fe8349419653..d94cc2f78a7b 100644 --- a/sw/uiconfig/swform/popupmenu/draw.xml +++ b/sw/uiconfig/swform/popupmenu/draw.xml @@ -72,6 +72,7 @@ <menu:menuitem menu:id=".uno:EnterGroup"/> <menu:menuitem menu:id=".uno:LeaveGroup"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swform/popupmenu/drawtext.xml b/sw/uiconfig/swform/popupmenu/drawtext.xml index 07a09cccae9d..2562b93114b8 100644 --- a/sw/uiconfig/swform/popupmenu/drawtext.xml +++ b/sw/uiconfig/swform/popupmenu/drawtext.xml @@ -25,6 +25,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:ThesaurusFromContext"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swform/popupmenu/table.xml b/sw/uiconfig/swform/popupmenu/table.xml index aee5e19d5c1d..c999d65fc2e1 100644 --- a/sw/uiconfig/swform/popupmenu/table.xml +++ b/sw/uiconfig/swform/popupmenu/table.xml @@ -135,6 +135,7 @@ <menu:menuitem menu:id=".uno:IndexEntryDialog"/> <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swform/popupmenu/text.xml b/sw/uiconfig/swform/popupmenu/text.xml index a9046d728686..b25c236ca141 100644 --- a/sw/uiconfig/swform/popupmenu/text.xml +++ b/sw/uiconfig/swform/popupmenu/text.xml @@ -83,6 +83,7 @@ <menu:menuitem menu:id=".uno:NextTrackedChange"/> <menu:menuitem menu:id=".uno:PreviousTrackedChange"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swreport/popupmenu/draw.xml b/sw/uiconfig/swreport/popupmenu/draw.xml index fe8349419653..d94cc2f78a7b 100644 --- a/sw/uiconfig/swreport/popupmenu/draw.xml +++ b/sw/uiconfig/swreport/popupmenu/draw.xml @@ -72,6 +72,7 @@ <menu:menuitem menu:id=".uno:EnterGroup"/> <menu:menuitem menu:id=".uno:LeaveGroup"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swreport/popupmenu/drawtext.xml b/sw/uiconfig/swreport/popupmenu/drawtext.xml index 07a09cccae9d..2562b93114b8 100644 --- a/sw/uiconfig/swreport/popupmenu/drawtext.xml +++ b/sw/uiconfig/swreport/popupmenu/drawtext.xml @@ -25,6 +25,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:ThesaurusFromContext"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swreport/popupmenu/table.xml b/sw/uiconfig/swreport/popupmenu/table.xml index 11045d07129d..548db6b09222 100644 --- a/sw/uiconfig/swreport/popupmenu/table.xml +++ b/sw/uiconfig/swreport/popupmenu/table.xml @@ -84,6 +84,7 @@ <menu:menuitem menu:id=".uno:NextTrackedChange"/> <menu:menuitem menu:id=".uno:PreviousTrackedChange"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swreport/popupmenu/text.xml b/sw/uiconfig/swreport/popupmenu/text.xml index 1f4f5f040a2f..e2cd521ae916 100644 --- a/sw/uiconfig/swreport/popupmenu/text.xml +++ b/sw/uiconfig/swreport/popupmenu/text.xml @@ -47,6 +47,7 @@ <menu:menuitem menu:id=".uno:ResetAttributes"/> <menu:menuitem menu:id=".uno:EditStyle"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swriter/popupmenu/draw.xml b/sw/uiconfig/swriter/popupmenu/draw.xml index fe8349419653..d94cc2f78a7b 100644 --- a/sw/uiconfig/swriter/popupmenu/draw.xml +++ b/sw/uiconfig/swriter/popupmenu/draw.xml @@ -72,6 +72,7 @@ <menu:menuitem menu:id=".uno:EnterGroup"/> <menu:menuitem menu:id=".uno:LeaveGroup"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swriter/popupmenu/drawtext.xml b/sw/uiconfig/swriter/popupmenu/drawtext.xml index 07a09cccae9d..2562b93114b8 100644 --- a/sw/uiconfig/swriter/popupmenu/drawtext.xml +++ b/sw/uiconfig/swriter/popupmenu/drawtext.xml @@ -25,6 +25,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:ThesaurusFromContext"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swriter/popupmenu/table.xml b/sw/uiconfig/swriter/popupmenu/table.xml index fc04ff6aadb5..360320bd9b1d 100644 --- a/sw/uiconfig/swriter/popupmenu/table.xml +++ b/sw/uiconfig/swriter/popupmenu/table.xml @@ -141,6 +141,7 @@ <menu:menuitem menu:id=".uno:IndexEntryDialog"/> <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swriter/popupmenu/text.xml b/sw/uiconfig/swriter/popupmenu/text.xml index effb85631b8e..50c7dc3dcf16 100644 --- a/sw/uiconfig/swriter/popupmenu/text.xml +++ b/sw/uiconfig/swriter/popupmenu/text.xml @@ -87,6 +87,7 @@ <menu:menuitem menu:id=".uno:NextTrackedChange"/> <menu:menuitem menu:id=".uno:PreviousTrackedChange"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swxform/popupmenu/draw.xml b/sw/uiconfig/swxform/popupmenu/draw.xml index fe8349419653..d94cc2f78a7b 100644 --- a/sw/uiconfig/swxform/popupmenu/draw.xml +++ b/sw/uiconfig/swxform/popupmenu/draw.xml @@ -72,6 +72,7 @@ <menu:menuitem menu:id=".uno:EnterGroup"/> <menu:menuitem menu:id=".uno:LeaveGroup"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swxform/popupmenu/drawtext.xml b/sw/uiconfig/swxform/popupmenu/drawtext.xml index 07a09cccae9d..2562b93114b8 100644 --- a/sw/uiconfig/swxform/popupmenu/drawtext.xml +++ b/sw/uiconfig/swxform/popupmenu/drawtext.xml @@ -25,6 +25,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:ThesaurusFromContext"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swxform/popupmenu/table.xml b/sw/uiconfig/swxform/popupmenu/table.xml index aee5e19d5c1d..c999d65fc2e1 100644 --- a/sw/uiconfig/swxform/popupmenu/table.xml +++ b/sw/uiconfig/swxform/popupmenu/table.xml @@ -135,6 +135,7 @@ <menu:menuitem menu:id=".uno:IndexEntryDialog"/> <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/> diff --git a/sw/uiconfig/swxform/popupmenu/text.xml b/sw/uiconfig/swxform/popupmenu/text.xml index b7a3a75d9c14..4f89f4c82ca4 100644 --- a/sw/uiconfig/swxform/popupmenu/text.xml +++ b/sw/uiconfig/swxform/popupmenu/text.xml @@ -82,6 +82,7 @@ <menu:menuitem menu:id=".uno:NextTrackedChange"/> <menu:menuitem menu:id=".uno:PreviousTrackedChange"/> <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertHyperlink"/> <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/> <menu:menuitem menu:id=".uno:EditHyperlink"/> <menu:menuitem menu:id=".uno:CopyHyperlinkLocation"/>