sfx2/source/dialog/backingwindow.cxx | 18 +++++++++++++++++- sfx2/source/dialog/backingwindow.hxx | 1 + 2 files changed, 18 insertions(+), 1 deletion(-)
New commits: commit 1203bf57dea230cd6de7bb5fe359d8fcd3e033dc Author: Caolán McNamara <caol...@redhat.com> Date: Fri Jul 29 16:29:03 2016 +0100 Related: tdf#99324 get backingwindow to honour auto mnemonic on mod key change Change-Id: I533232729db4a6ad5812d18bb63c36f7401066c0 diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx index 24f3bf0..6059ca1 100644 --- a/sfx2/source/dialog/backingwindow.cxx +++ b/sfx2/source/dialog/backingwindow.cxx @@ -163,8 +163,19 @@ BackingWindow::BackingWindow( vcl::Window* i_pParent ) : // init background SetBackground(); + + GetParent()->AddEventListener(LINK(this, BackingWindow, WindowEventListener)); } +IMPL_LINK_TYPED(BackingWindow, WindowEventListener, VclWindowEvent&, rEvent, void) +{ + if (rEvent.GetId() != VCLEVENT_WINDOW_COMMAND) + return; + CommandEvent* pCmdEvt = static_cast<CommandEvent*>(rEvent.GetData()); + if (pCmdEvt->GetCommand() != CommandEventId::ModKeyChange) + return; + Accelerator::ToggleMnemonicsOnHierarchy(*pCmdEvt, this); +} BackingWindow::~BackingWindow() { @@ -173,6 +184,7 @@ BackingWindow::~BackingWindow() void BackingWindow::dispose() { + GetParent()->RemoveEventListener(LINK(this, BackingWindow, WindowEventListener)); // deregister drag&drop helper if (mxDropTargetListener.is()) { @@ -405,7 +417,7 @@ void BackingWindow::Paint(vcl::RenderContext& rRenderContext, const Rectangle&) *pVDev.get()); } -bool BackingWindow::PreNotify( NotifyEvent& rNEvt ) +bool BackingWindow::PreNotify(NotifyEvent& rNEvt) { if( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) { @@ -462,6 +474,10 @@ bool BackingWindow::PreNotify( NotifyEvent& rNEvt ) if ((aCommand != "vnd.sun.star.findbar:FocusToFindbar") && pEvt && mpAccExec->execute(rKeyCode)) return true; } + else if (rNEvt.GetType() == MouseNotifyEvent::COMMAND) + { + Accelerator::ToggleMnemonicsOnHierarchy(*rNEvt.GetCommandEvent(), this); + } return Window::PreNotify( rNEvt ); } diff --git a/sfx2/source/dialog/backingwindow.hxx b/sfx2/source/dialog/backingwindow.hxx index abb68e9..2a12b84 100644 --- a/sfx2/source/dialog/backingwindow.hxx +++ b/sfx2/source/dialog/backingwindow.hxx @@ -106,6 +106,7 @@ class BackingWindow : public vcl::Window, public VclBuilderContainer DECL_LINK_TYPED(CreateContextMenuHdl, ThumbnailViewItem*, void); DECL_LINK_TYPED(OpenTemplateHdl, ThumbnailViewItem*, void); DECL_LINK_TYPED(EditTemplateHdl, ThumbnailViewItem*, void); + DECL_LINK_TYPED(WindowEventListener, VclWindowEvent&, void); void initControls();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits