diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2016-06-18 14:15:07 +0200 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2016-06-20 09:37:39 +0000 |
commit | 4833ed2f7fed76cba5fa40b0490da14c6838e8b6 (patch) | |
tree | 25262d3554320e47bd8346076281dc320f713dee | |
parent | cf5208b67180dc1deaeca611706087b1e2acc1ae (diff) |
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@libreoffice.org>
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r-- | sd/source/ui/sidebar/SlideBackground.cxx | 35 | ||||
-rw-r--r-- | sd/source/ui/sidebar/SlideBackground.hxx | 2 |
2 files changed, 27 insertions, 10 deletions
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx index d2fb73cfb8da..10a6c9129feb 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 65d908045be2..1fba18aaf0e5 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; |