rhbz#1343752 fix view status in menu
... after commit 229fc164dc1773484b74eca016863cf68860e81b .
Change-Id: Ibfbbb86c81527f008b8e1cbe9d8ca3174a944931
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index e5c92f4..340948a 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.