Kaydet (Commit) 8da10652 authored tarafından Maxim Monastirsky's avatar Maxim Monastirsky

tdf#106479 Make edit context menu dispatcher based

This allows us to add there any .uno command and
also get the icon and keyboard shortcut for it.
Use this to add clipboard commands.

Change-Id: Ic42c28add7771f322491e8e7d6df052e3c2c8d75
Reviewed-on: https://gerrit.libreoffice.org/37353Reviewed-by: 's avatarMaxim Monastirsky <momonasmon@gmail.com>
Tested-by: 's avatarMaxim Monastirsky <momonasmon@gmail.com>
üst 7d9e441e
......@@ -141,7 +141,68 @@
<value>9</value>
</prop>
</node>
<node oor:name=".uno:InsertCommandText?Text:string=newline " oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">New Line</value>
</prop>
</node>
<node oor:name=".uno:InsertCommandText?Text:string=`" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Small Gap</value>
</prop>
</node>
<node oor:name=".uno:InsertCommandText?Text:string=~" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Gap</value>
</prop>
</node>
</node>
<node oor:name="Popups">
<node oor:name=".uno:UnaryBinaryMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Unary/Binary Operators</value>
</prop>
</node>
<node oor:name=".uno:RelationsMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Relations</value>
</prop>
</node>
<node oor:name=".uno:SetOperationsMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Set Operations</value>
</prop>
</node>
<node oor:name=".uno:FunctionsMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Functions</value>
</prop>
</node>
<node oor:name=".uno:OperatorsMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">O~perators</value>
</prop>
</node>
<node oor:name=".uno:AttributesMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Attributes</value>
</prop>
</node>
<node oor:name=".uno:BracketsMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Brackets</value>
</prop>
</node>
<node oor:name=".uno:FormatsMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">For~mats</value>
</prop>
</node>
<node oor:name=".uno:OthersMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Others</value>
</prop>
</node>
</node>
<node oor:name="Popups"/>
</node>
</oor:component-data>
......@@ -20,9 +20,14 @@
<oor:component-data xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="MathWindowState" oor:package="org.openoffice.Office.UI">
<node oor:name="UIElements">
<node oor:name="States">
<node oor:name="private:resource/popupmenu/edit" oor:op="replace">
<prop oor:name="UIName" oor:type="xs:string">
<value xml:lang="en-US">Edit Panel</value>
</prop>
</node>
<node oor:name="private:resource/popupmenu/view" oor:op="replace">
<prop oor:name="UIName" oor:type="xs:string">
<value xml:lang="en-US">Work Area</value>
<value xml:lang="en-US">View Panel</value>
</prop>
</node>
<node oor:name="private:resource/toolbar/standardbar" oor:op="replace">
......
......@@ -14,6 +14,7 @@ $(eval $(call gb_UIConfig_add_menubarfiles,modules/smath,\
))
$(eval $(call gb_UIConfig_add_popupmenufiles,modules/smath,\
starmath/uiconfig/smath/popupmenu/edit \
starmath/uiconfig/smath/popupmenu/view \
))
......@@ -30,7 +31,6 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/smath,\
$(eval $(call gb_UIConfig_add_uifiles,modules/smath,\
starmath/uiconfig/smath/ui/alignmentdialog \
starmath/uiconfig/smath/ui/catalogdialog \
starmath/uiconfig/smath/ui/commandmenu \
starmath/uiconfig/smath/ui/dockingelements \
starmath/uiconfig/smath/ui/fontdialog \
starmath/uiconfig/smath/ui/fontsizedialog \
......
......@@ -58,7 +58,6 @@ class SmEditWindow : public vcl::Window, public DropTargetHelper
virtual void KeyInput(const KeyEvent& rKEvt) override;
virtual void Command(const CommandEvent& rCEvt) override;
DECL_LINK(MenuSelectHdl, Menu *, bool);
DECL_LINK(ModifyTimerHdl, Timer *, void);
DECL_LINK(CursorMoveTimerHdl, Timer *, void);
......
......@@ -217,7 +217,7 @@ SfxInt16Item Graphic SID_GAPHIC_SM
SfxVoidItem InsertCommandText SID_INSERTCOMMANDTEXT
()
(SfxStringItem Text SID_INSERTCOMMANDTEXT)
[
AutoUpdate = FALSE,
FastCall = FALSE,
......
......@@ -341,29 +341,9 @@ void SmEditWindow::Command(const CommandEvent& rCEvt)
GetParent()->ToTop();
Point aPoint = rCEvt.GetMousePosPixel();
VclBuilder aBuilder(nullptr, VclBuilderContainer::getUIRootDir(), "modules/smath/ui/commandmenu.ui", "");
VclPtr<PopupMenu> xPopupMenu(aBuilder.get_menu("menu"));
// added for replaceability of context menus
VclPtr<Menu> pMenu;
css::ui::ContextMenuExecuteEvent aEvent;
aEvent.SourceWindow = VCLUnoHelper::GetInterface( this );
aEvent.ExecutePosition.X = aPoint.X();
aEvent.ExecutePosition.Y = aPoint.Y();
OUString sDummy;
if ( GetView()->TryContextMenuInterception( *xPopupMenu, sDummy, pMenu, aEvent ) )
{
if ( pMenu )
{
xPopupMenu.disposeAndClear();
xPopupMenu = static_cast<PopupMenu*>(pMenu.get());
}
}
xPopupMenu->SetSelectHdl(LINK(this, SmEditWindow, MenuSelectHdl));
xPopupMenu->Execute( this, aPoint );
SmViewShell* pViewSh = rCmdBox.GetView();
if (pViewSh)
pViewSh->GetViewFrame()->GetDispatcher()->ExecutePopup("edit", this, &aPoint);
bForwardEvt = false;
}
else if (rCEvt.GetCommand() == CommandEventId::Wheel)
......@@ -397,16 +377,6 @@ bool SmEditWindow::HandleWheelCommands( const CommandEvent &rCEvt )
return bCommandHandled;
}
IMPL_LINK( SmEditWindow, MenuSelectHdl, Menu *, pMenu, bool )
{
SmViewShell *pViewSh = rCmdBox.GetView();
if (pViewSh)
pViewSh->GetViewFrame()->GetDispatcher()->ExecuteList(
SID_INSERTCOMMANDTEXT, SfxCallMode::RECORD,
{ new SfxStringItem(SID_INSERTCOMMANDTEXT, OUString::fromUtf8(pMenu->GetCurItemIdent())) });
return false;
}
void SmEditWindow::KeyInput(const KeyEvent& rKEvt)
{
if (rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE)
......
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment