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/simpress/popupmenu/drawtext.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 45 files changed, 170 insertions(+)
New commits: commit 71f3585d72a8a78b3f49632c3e9e9e01bf5c342c Author: Samuel Mehrbrodt <[email protected]> AuthorDate: Mon Jul 21 11:47:16 2025 +0200 Commit: Szymon Kłos <[email protected]> CommitDate: Thu Jul 24 09:41:44 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 (cherry picked from commit ca22a5e02e54c9daa56f4fb0be5488bb69c4d732) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188107 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index cf2b984ca936..8d50cdb430e1 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -548,6 +548,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 da58e407556b..3064d506f95b 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -3417,6 +3417,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 87688e93f8f7..1f3bcfa194a2 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 01c65a4ed446..e45717a31f74 100644 --- a/sc/source/ui/drawfunc/drawsh.cxx +++ b/sc/source/ui/drawfunc/drawsh.cxx @@ -283,6 +283,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 04a27dbfd35c..e089dda6de89 100644 --- a/sc/source/ui/drawfunc/drawsh2.cxx +++ b/sc/source/ui/drawfunc/drawsh2.cxx @@ -220,6 +220,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 ); @@ -236,6 +237,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 @@ -301,6 +306,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 d5d00a2f04bd..8f845016ac2a 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 3e8a5abe7b1d..eae7f783c93f 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 cb14ac724f35..33e714ea949f 100644 --- a/sc/uiconfig/scalc/popupmenu/graphic.xml +++ b/sc/uiconfig/scalc/popupmenu/graphic.xml @@ -61,6 +61,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 adf2f1d18b16..1c64ad96806b 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -2858,6 +2858,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 917a21e14ece..5e6fe08f4ee3 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/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/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index 076ea7facb5d..a298f6f9a882 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 612f3d1955a9..69c426e2d494 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 ac1c0281b71e..d79da729e054 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -2032,6 +2032,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: { @@ -3971,6 +3978,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 05b67ac1d72b..3ab405ecaad4 100644 --- a/sw/uiconfig/sglobal/popupmenu/table.xml +++ b/sw/uiconfig/sglobal/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/sglobal/popupmenu/text.xml b/sw/uiconfig/sglobal/popupmenu/text.xml index 209510f5fe6c..46e59aafdcab 100644 --- a/sw/uiconfig/sglobal/popupmenu/text.xml +++ b/sw/uiconfig/sglobal/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/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 05b67ac1d72b..3ab405ecaad4 100644 --- a/sw/uiconfig/swform/popupmenu/table.xml +++ b/sw/uiconfig/swform/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/swform/popupmenu/text.xml b/sw/uiconfig/swform/popupmenu/text.xml index 209510f5fe6c..46e59aafdcab 100644 --- a/sw/uiconfig/swform/popupmenu/text.xml +++ b/sw/uiconfig/swform/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/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 f6734784cf4d..eaf252ae7770 100644 --- a/sw/uiconfig/swreport/popupmenu/table.xml +++ b/sw/uiconfig/swreport/popupmenu/table.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/text.xml b/sw/uiconfig/swreport/popupmenu/text.xml index e99e2653a3a1..8d1ec7da5960 100644 --- a/sw/uiconfig/swreport/popupmenu/text.xml +++ b/sw/uiconfig/swreport/popupmenu/text.xml @@ -46,6 +46,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 c40c3f7ad193..d79181973466 100644 --- a/sw/uiconfig/swriter/popupmenu/table.xml +++ b/sw/uiconfig/swriter/popupmenu/table.xml @@ -140,6 +140,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 9e1f566e1da0..18eb747465ba 100644 --- a/sw/uiconfig/swriter/popupmenu/text.xml +++ b/sw/uiconfig/swriter/popupmenu/text.xml @@ -86,6 +86,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 05b67ac1d72b..3ab405ecaad4 100644 --- a/sw/uiconfig/swxform/popupmenu/table.xml +++ b/sw/uiconfig/swxform/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/swxform/popupmenu/text.xml b/sw/uiconfig/swxform/popupmenu/text.xml index 004b2f3717f2..e30c4660cc8e 100644 --- a/sw/uiconfig/swxform/popupmenu/text.xml +++ b/sw/uiconfig/swxform/popupmenu/text.xml @@ -81,6 +81,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"/>
