diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-11-08 16:15:55 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-11-09 13:23:52 +0000 |
commit | e9da91fd028e73846b1bed2618357d0abfbdcc57 (patch) | |
tree | 9093ef9c923f418d0910efef09f3cf26c590b6c3 /sd | |
parent | 2ed4034aa51292a8bb8e770213f0021a3f1c9408 (diff) |
tdf#103756 - CTRL+Z not working to undo changes performed through Navigator
Hooked up the tree control to do explicit handling of accelerator key
input.
Change-Id: I8b47fc2d651f7db2549c73c5314fbc4a7f4efecc
Reviewed-on: https://gerrit.libreoffice.org/30694
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/dlg/sdtreelb.cxx | 19 | ||||
-rw-r--r-- | sd/source/ui/inc/sdtreelb.hxx | 9 |
2 files changed, 26 insertions, 2 deletions
diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 19baf9a76f07..9b9416a279e0 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -49,6 +49,7 @@ #include <com/sun/star/embed/XEmbedPersist.hpp> #include <com/sun/star/frame/Desktop.hpp> #include <com/sun/star/frame/XFramesSupplier.hpp> +#include <svtools/acceleratorexecute.hxx> #include <svtools/embedtransfer.hxx> #include <svtools/svlbitm.hxx> #include <svtools/treelistentry.hxx> @@ -56,6 +57,8 @@ #include <comphelper/processfactory.hxx> #include <tools/diagnose_ex.h> #include <o3tl/make_unique.hxx> + + using namespace com::sun::star; class SdPageObjsTLB::IconProvider @@ -214,8 +217,19 @@ SdPageObjsTLB::SdPageObjsTLB( vcl::Window* pParentWin, WinBits nStyle ) SetDragDropMode( DragDropMode::CTRL_MOVE | DragDropMode::CTRL_COPY | DragDropMode::APP_MOVE | DragDropMode::APP_COPY | DragDropMode::APP_DROP ); + + m_pAccel = ::svt::AcceleratorExecute::createAcceleratorHelper(); } +void SdPageObjsTLB::SetViewFrame( SfxViewFrame* pViewFrame ) +{ + mpFrame = pViewFrame; + sd::ViewShellBase* pBase = sd::ViewShellBase::GetViewShellBase(pViewFrame); + const css::uno::Reference< css::frame::XFrame > xFrame = pBase->GetMainViewShell()->GetViewFrame()->GetFrame().GetFrameInterface(); + m_pAccel->init(::comphelper::getProcessComponentContext(), xFrame); +} + + SdPageObjsTLB::~SdPageObjsTLB() { disposeOnce(); @@ -230,6 +244,7 @@ void SdPageObjsTLB::dispose() delete mpMedium; mpParent.clear(); mpDropNavWin.clear(); + m_pAccel.reset(); SvTreeListBox::dispose(); } @@ -1037,6 +1052,10 @@ void SdPageObjsTLB::SelectHdl() */ void SdPageObjsTLB::KeyInput( const KeyEvent& rKEvt ) { + const vcl::KeyCode& aKeyCode = rKEvt.GetKeyCode(); + if ( m_pAccel->execute( aKeyCode ) ) + // the accelerator consumed the event + return; if( rKEvt.GetKeyCode().GetCode() == KEY_RETURN ) { // commented code from svtools/source/contnr/svimpbox.cxx diff --git a/sd/source/ui/inc/sdtreelb.hxx b/sd/source/ui/inc/sdtreelb.hxx index a7c12d720414..2053c8d5128f 100644 --- a/sd/source/ui/inc/sdtreelb.hxx +++ b/sd/source/ui/inc/sdtreelb.hxx @@ -50,6 +50,9 @@ class DrawDocShell; typedef ::tools::SvRef<DrawDocShell> DrawDocShellRef; #endif } +namespace svt { + class AcceleratorExecute; +} /** * Effect-Tab-Dialog @@ -62,6 +65,8 @@ private: // set contenttree in SdNavigatorWin bool bisInSdNavigatorWin; + + ::std::unique_ptr< ::svt::AcceleratorExecute> m_pAccel; public: // nested class to implement the TransferableHelper @@ -182,7 +187,7 @@ protected: public: SdPageObjsTLB(vcl::Window* pParent, WinBits nStyle); - virtual ~SdPageObjsTLB() override; + virtual ~SdPageObjsTLB() override; virtual void dispose() override; // helper function for GetEntryAltText and GetEntryLongDescription @@ -192,7 +197,7 @@ public: virtual void SelectHdl() override; virtual void KeyInput( const KeyEvent& rKEvt ) override; - void SetViewFrame( SfxViewFrame* pViewFrame ) { mpFrame = pViewFrame; } + void SetViewFrame( SfxViewFrame* pViewFrame ); void Fill( const SdDrawDocument*, bool bAllPages, const OUString& rDocName ); void Fill( const SdDrawDocument*, SfxMedium* pSfxMedium, const OUString& rDocName ); |