summaryrefslogtreecommitdiff
path: root/sd/source/ui/view/ViewShellBase.cxx
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2016-06-15 16:52:26 +0200
committerDavid Tardon <dtardon@redhat.com>2016-06-16 16:15:10 +0200
commitc4c7fe98b0f05329edf7930ff92b44892d4724e6 (patch)
treef026e0bc0eba9e8cd1a21fd2d2e79eaf99e64a10 /sd/source/ui/view/ViewShellBase.cxx
parentf64cca248b1dca5fbcb67486dccbc601e7ca3892 (diff)
rhbz#1343752 fix view status in menu
... after commit 229fc164dc1773484b74eca016863cf68860e81b . Change-Id: Ibfbbb86c81527f008b8e1cbe9d8ca3174a944931
Diffstat (limited to 'sd/source/ui/view/ViewShellBase.cxx')
-rw-r--r--sd/source/ui/view/ViewShellBase.cxx86
1 files changed, 30 insertions, 56 deletions
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index e5c92f42de95..340948a83b97 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -1221,13 +1221,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> xResourceId;
try
{
+ // Check if the right view is active
switch (nItemId)
{
case SID_LEFT_PANE_IMPRESS:
@@ -1242,22 +1242,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:
@@ -1278,30 +1269,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:
@@ -1318,32 +1297,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<DrawViewShell*>(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<DrawViewShell*>(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.