From cd6a76d7c0c6b5d90fd5f1d9e2b3847cc3425ca4 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Wed, 15 Jun 2016 16:52:26 +0200 Subject: rhbz#1343752 fix view status in menu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... after commit 229fc164dc1773484b74eca016863cf68860e81b . Change-Id: Ibfbbb86c81527f008b8e1cbe9d8ca3174a944931 (cherry picked from commit c4c7fe98b0f05329edf7930ff92b44892d4724e6) Reviewed-on: https://gerrit.libreoffice.org/26500 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- sd/source/ui/view/ViewShellBase.cxx | 86 +++++++++++++------------------------ 1 file changed, 30 insertions(+), 56 deletions(-) diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx index 887db266bb2c..0bf6ac64fb87 100644 --- a/sd/source/ui/view/ViewShellBase.cxx +++ b/sd/source/ui/view/ViewShellBase.cxx @@ -1233,13 +1233,13 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet) SfxWhichIter aSetIterator (rSet); sal_uInt16 nItemId (aSetIterator.FirstWhich()); - FrameView *pFrameView; while (nItemId > 0) { bool bState (false); Reference xResourceId; try { + // Check if the right view is active switch (nItemId) { case SID_LEFT_PANE_IMPRESS: @@ -1254,22 +1254,13 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet) bState = xConfiguration->hasResource(xResourceId); break; + case SID_DRAWINGMODE: case SID_NORMAL_MULTI_PANE_GUI: - if (ViewShell* pViewShell = mrBase.GetMainViewShell().get()) - { - pFrameView = pViewShell->GetFrameView(); - bState = pFrameView->GetViewShEditMode() == EM_PAGE - && pFrameView->GetPageKind() == PK_STANDARD; - } - break; - case SID_SLIDE_MASTER_MODE: - if (ViewShell* pViewShell = mrBase.GetMainViewShell().get()) - { - pFrameView = pViewShell->GetFrameView(); - bState = pFrameView->GetViewShEditMode() == EM_MASTERPAGE - && pFrameView->GetPageKind() == PK_STANDARD; - } + xResourceId = ResourceId::createWithAnchorURL( + xContext, FrameworkHelper::msImpressViewURL, + FrameworkHelper::msCenterPaneURL); + bState = xConfiguration->hasResource(xResourceId); break; case SID_SLIDE_SORTER_MULTI_PANE_GUI: @@ -1290,30 +1281,18 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet) break; case SID_HANDOUT_MASTER_MODE: - if (ViewShell* pViewShell = mrBase.GetMainViewShell().get()) - { - pFrameView = pViewShell->GetFrameView(); - bState = pFrameView->GetViewShEditMode() == EM_MASTERPAGE - && pFrameView->GetPageKind() == PK_HANDOUT; - } + xResourceId = ResourceId::createWithAnchorURL( + xContext, FrameworkHelper::msHandoutViewURL, + FrameworkHelper::msCenterPaneURL); + bState = xConfiguration->hasResource(xResourceId); break; case SID_NOTES_MODE: - if (ViewShell* pViewShell = mrBase.GetMainViewShell().get()) - { - pFrameView = pViewShell->GetFrameView(); - bState = pFrameView->GetViewShEditMode() == EM_PAGE - && pFrameView->GetPageKind() == PK_NOTES; - } - break; - case SID_NOTES_MASTER_MODE: - if (ViewShell* pViewShell = mrBase.GetMainViewShell().get()) - { - pFrameView = pViewShell->GetFrameView(); - bState = pFrameView->GetViewShEditMode() == EM_MASTERPAGE - && pFrameView->GetPageKind() == PK_NOTES; - } + xResourceId = ResourceId::createWithAnchorURL( + xContext, FrameworkHelper::msNotesViewURL, + FrameworkHelper::msCenterPaneURL); + bState = xConfiguration->hasResource(xResourceId); break; case SID_TOGGLE_TABBAR_VISIBILITY: @@ -1330,32 +1309,27 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet) { } - // Take the master page mode into account. - switch (nItemId) + // Check if edit mode fits too + if (bState) { - case SID_NORMAL_MULTI_PANE_GUI: - case SID_NOTES_MODE: + ViewShell* const pCenterViewShell = FrameworkHelper::Instance(mrBase)->GetViewShell( + FrameworkHelper::msCenterPaneURL).get(); + DrawViewShell* const pShell = dynamic_cast(pCenterViewShell); + if (pShell) { - // Determine the master page mode. - ViewShell* pCenterViewShell = FrameworkHelper::Instance(mrBase)->GetViewShell( - FrameworkHelper::msCenterPaneURL).get(); - bool bMasterPageMode (false); - if (DrawViewShell* pShell = dynamic_cast(pCenterViewShell)) + switch (nItemId) { - if (pShell->GetEditMode() == EM_MASTERPAGE) - { - bMasterPageMode = true; - } + case SID_DRAWINGMODE: + case SID_NORMAL_MULTI_PANE_GUI: + case SID_NOTES_MODE: + bState = pShell->GetEditMode() == EM_PAGE; + break; + case SID_SLIDE_MASTER_MODE: + case SID_NOTES_MASTER_MODE: + bState = pShell->GetEditMode() == EM_MASTERPAGE; + break; } - - bState &= !bMasterPageMode; - break; } - - case SID_HANDOUT_MASTER_MODE: - // There is only the master page mode for the handout - // view so ignore the master page flag. - break; } // And finally set the state. -- cgit