summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2016-06-18 14:15:07 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2016-06-20 09:37:39 +0000
commit4833ed2f7fed76cba5fa40b0490da14c6838e8b6 (patch)
tree25262d3554320e47bd8346076281dc320f713dee /sd
parentcf5208b67180dc1deaeca611706087b1e2acc1ae (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>
Diffstat (limited to 'sd')
-rw-r--r--sd/source/ui/sidebar/SlideBackground.cxx35
-rw-r--r--sd/source/ui/sidebar/SlideBackground.hxx2
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;