[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