[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - sd/source
Noel Grandin
noel.grandin at collabora.co.uk
Tue Nov 15 08:58:41 UTC 2016
sd/source/ui/dlg/sdtreelb.cxx | 22 ++++++++++++++++++++++
sd/source/ui/inc/sdtreelb.hxx | 9 +++++++--
2 files changed, 29 insertions(+), 2 deletions(-)
New commits:
commit d1909ab7940109ce7d43da04e480db4e82b8310f
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Tue Nov 8 16:15:55 2016 +0200
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.
Note that there is an extra check for null in SdPageObjsTLB::SetViewFrame
to prevent various 'make check' failures. No idea why this did
not trigger on trunk.
Reviewed-on: https://gerrit.libreoffice.org/30694
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
(cherry picked from commit e9da91fd028e73846b1bed2618357d0abfbdcc57)
Change-Id: I8b47fc2d651f7db2549c73c5314fbc4a7f4efecc
Reviewed-on: https://gerrit.libreoffice.org/30769
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx
index 0e0babd..0aeab05 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
@@ -252,8 +255,22 @@ 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;
+ if (m_pAccel)
+ {
+ 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();
@@ -268,6 +285,7 @@ void SdPageObjsTLB::dispose()
delete mpMedium;
mpParent.clear();
mpDropNavWin.clear();
+ m_pAccel.reset();
SvTreeListBox::dispose();
}
@@ -1075,6 +1093,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 2976b65..35e166c 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
@@ -183,7 +188,7 @@ public:
SdPageObjsTLB( vcl::Window* pParent, const SdResId& rSdResId );
SdPageObjsTLB( vcl::Window* pParent, WinBits nStyle );
- virtual ~SdPageObjsTLB();
+ virtual ~SdPageObjsTLB();
virtual void dispose() override;
// helper function for GetEntryAltText and GetEntryLongDescription
@@ -193,7 +198,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 );
More information about the Libreoffice-commits
mailing list