[Libreoffice-commits] core.git: sd/source

Katarina Behrens Katarina.Behrens at cib.de
Mon Jun 20 09:38:01 UTC 2016


 sd/source/ui/sidebar/SlideBackground.cxx |   35 ++++++++++++++++++++++---------
 sd/source/ui/sidebar/SlideBackground.hxx |    2 +
 2 files changed, 27 insertions(+), 10 deletions(-)

New commits:
commit 4833ed2f7fed76cba5fa40b0490da14c6838e8b6
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date:   Sat Jun 18 14:15:07 2016 +0200

    tdf#100441: Fix listbox state in master vs. normal mode
    
    Events appear in following order:
    normal -> master: 1. EID_EDIT_MODE_MASTER, 2. EID_EDIT_VIEW_SELECTION
    master -> normal: 1. EID_EDIT_MODE_NORMAL, 2. EID_END_TEXT_EDIT
    
    This is only partial fix, selecting the right master page in other than
    normal mode is still broken
    
    Change-Id: I2dd91e77c4ed5627079fc9d2b39e40c8e74a9f8e
    Reviewed-on: https://gerrit.libreoffice.org/26484
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Katarina Behrens <Katarina.Behrens at cib.de>

diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx
index d2fb73c..10a6c91 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -94,6 +94,7 @@ SlideBackground::SlideBackground(
     mpGradientItem(),
     mpHatchItem(),
     mpBitmapItem(),
+    mbEditModeChangePending(false),
     mxFrame(rxFrame),
     maContext(),
     mbTitle(false),
@@ -302,6 +303,10 @@ void SlideBackground::addListener()
         tools::EventMultiplexerEvent::EID_CURRENT_PAGE |
         tools::EventMultiplexerEvent::EID_MAIN_VIEW_ADDED |
         tools::EventMultiplexerEvent::EID_SHAPE_CHANGED |
+        tools::EventMultiplexerEvent::EID_EDIT_MODE_NORMAL |
+        tools::EventMultiplexerEvent::EID_EDIT_MODE_MASTER |
+        tools::EventMultiplexerEvent::EID_EDIT_VIEW_SELECTION |
+        tools::EventMultiplexerEvent::EID_END_TEXT_EDIT |
         tools::EventMultiplexerEvent::EID_VIEW_ADDED);
 }
 
@@ -321,17 +326,29 @@ IMPL_LINK_TYPED(SlideBackground, EventMultiplexerListener,
         case tools::EventMultiplexerEvent::EID_SHAPE_CHANGED:
             populateMasterSlideDropdown();
             break;
-        case tools::EventMultiplexerEvent::EID_MAIN_VIEW_ADDED:
+        case tools::EventMultiplexerEvent::EID_EDIT_MODE_NORMAL:
+        case tools::EventMultiplexerEvent::EID_EDIT_MODE_MASTER:
+            mbEditModeChangePending = true;
+            break;
+        case tools::EventMultiplexerEvent::EID_EDIT_VIEW_SELECTION:
+        case tools::EventMultiplexerEvent::EID_END_TEXT_EDIT:
         {
-            ViewShell* pMainViewShell = mrBase.GetMainViewShell().get();
-
-            if (pMainViewShell)
+            if (mbEditModeChangePending)
             {
-                DrawViewShell* pDrawViewShell = static_cast<DrawViewShell*>(pMainViewShell);
-                EditMode eMode = pDrawViewShell->GetEditMode();
+                ViewShell* pMainViewShell = mrBase.GetMainViewShell().get();
+
+                if (pMainViewShell)
+                {
+                    DrawViewShell* pDrawViewShell = static_cast<DrawViewShell*>(pMainViewShell);
+                    EditMode eMode = pDrawViewShell->GetEditMode();
+
+                    if ( eMode == EM_MASTERPAGE)
+                        mpMasterSlide->Disable();
+                    else // EM_PAGE
+                        mpMasterSlide->Enable();
+                }
 
-                if ( eMode == EM_MASTERPAGE)
-                    mpMasterSlide->Disable();
+                mbEditModeChangePending = false;
             }
         }
         break;
@@ -405,8 +422,6 @@ void SlideBackground::updateMasterSlideSelection()
         SdPage* pMasterPage = static_cast<SdPage*>(&rMasterPage);
         mpMasterSlide->SelectEntry(pMasterPage->GetName());
     }
-    else
-        mpMasterSlide->SetNoSelection();
 }
 
 void SlideBackground::dispose()
diff --git a/sd/source/ui/sidebar/SlideBackground.hxx b/sd/source/ui/sidebar/SlideBackground.hxx
index 65d9080..1fba18a 100644
--- a/sd/source/ui/sidebar/SlideBackground.hxx
+++ b/sd/source/ui/sidebar/SlideBackground.hxx
@@ -102,6 +102,8 @@ private:
     std::unique_ptr< XFillHatchItem > mpHatchItem;
     std::unique_ptr< XFillBitmapItem > mpBitmapItem;
 
+    bool mbEditModeChangePending;
+
     css::uno::Reference<css::frame::XFrame> mxFrame;
     ::sfx2::sidebar::EnumContext            maContext;
     bool         mbTitle;


More information about the Libreoffice-commits mailing list