summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-04-23 14:54:42 +0530
committerJan Holesovsky <kendy@collabora.com>2017-05-11 11:47:15 +0200
commit3b12d70d2ac96b70e0cc92309fee95a14393cd8d (patch)
tree69048df0e336658581224f670d9924b28d9c2d91 /sd
parent789a1d58c322b553bf16e6bc95dd5f306a875ab2 (diff)
sd: Use unique Page ids for better multi-view support + unit test
... instead of using simple IDs which are assumed to be one greater than the slide position everywhere in the codebase. Use a 16 bit static counter and uniquely assign page ids to SdPage objects. This helps in identifying which slide was already selected in second view before any slide is deleted in the first view. Otherwise, using simple positions to keep track of it leads the second view to end up selecting the wrong slide after any slide is added or removed in the first view. (cherry picked from commit 3065dff28724f5dcf2592ce897f85d529c1f8554) Change-Id: I465cf7ea86899f0e52549062a9e5fa5cd459f978 Reviewed-on: https://gerrit.libreoffice.org/36943 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/inc/sdpage.hxx6
-rw-r--r--sd/qa/unit/tiledrendering/data/dummy.odpbin10727 -> 10763 bytes
-rw-r--r--sd/qa/unit/tiledrendering/tiledrendering.cxx52
-rw-r--r--sd/source/core/sdpage.cxx3
-rw-r--r--sd/source/core/sdpage2.cxx1
-rw-r--r--sd/source/ui/inc/DrawViewShell.hxx1
-rw-r--r--sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx6
-rw-r--r--sd/source/ui/uitest/uiobject.cxx2
-rw-r--r--sd/source/ui/view/Outliner.cxx2
-rw-r--r--sd/source/ui/view/OutlinerIterator.cxx2
-rw-r--r--sd/source/ui/view/ViewShellBase.cxx3
-rw-r--r--sd/source/ui/view/drviews1.cxx76
-rw-r--r--sd/source/ui/view/drviews2.cxx10
-rw-r--r--sd/source/ui/view/drviews3.cxx2
-rw-r--r--sd/source/ui/view/drviews4.cxx2
-rw-r--r--sd/source/ui/view/drviews5.cxx2
-rw-r--r--sd/source/ui/view/drviewsa.cxx2
-rw-r--r--sd/source/ui/view/drviewsb.cxx10
18 files changed, 124 insertions, 58 deletions
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx
index dc23fed641da..885f01e03958 100644
--- a/sd/inc/sdpage.hxx
+++ b/sd/inc/sdpage.hxx
@@ -371,10 +371,16 @@ public:
const sd::AnnotationVector& getAnnotations() const { return maAnnotations; }
OString stringify() const;
virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const override;
+ sal_uInt16 getPageId() { return mnPageId; }
+
+ static sal_uInt16 mnLastPageId;
private:
bool mbIsPrecious;
+ // page id of this page
+ sal_uInt16 mnPageId;
+
/** clone the animations from this and set them to rTargetPage
*/
void cloneAnimations( SdPage& rTargetPage ) const;
diff --git a/sd/qa/unit/tiledrendering/data/dummy.odp b/sd/qa/unit/tiledrendering/data/dummy.odp
index 12cd67947df5..83dee413c5ed 100644
--- a/sd/qa/unit/tiledrendering/data/dummy.odp
+++ b/sd/qa/unit/tiledrendering/data/dummy.odp
Binary files differ
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 2f38bc3e4d4c..a6f13cbcead9 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -45,6 +45,8 @@
#include <undo/undomanager.hxx>
#include <sfx2/request.hxx>
#include <svx/svxids.hrc>
+#include <DrawViewShell.hxx>
+#include <pres.hxx>
#include <chrono>
@@ -92,6 +94,7 @@ public:
void testTdf81754();
void testTdf105502();
void testCommentCallbacks();
+ void testMultiViewInsertDeletePage();
CPPUNIT_TEST_SUITE(SdTiledRenderingTest);
CPPUNIT_TEST(testRegisterCallback);
@@ -127,6 +130,7 @@ public:
CPPUNIT_TEST(testTdf81754);
CPPUNIT_TEST(testTdf105502);
CPPUNIT_TEST(testCommentCallbacks);
+ CPPUNIT_TEST(testMultiViewInsertDeletePage);
CPPUNIT_TEST_SUITE_END();
@@ -1704,6 +1708,54 @@ void SdTiledRenderingTest::testCommentCallbacks()
comphelper::LibreOfficeKit::setActive(false);
}
+void SdTiledRenderingTest::testMultiViewInsertDeletePage()
+{
+ // Load the document.
+ comphelper::LibreOfficeKit::setActive();
+ SdXImpressDocument* pXImpressDocument = createDoc("dummy.odp");
+ ViewCallback aView1;
+ int nView1 = SfxLokHelper::getView();
+ SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView1);
+ uno::Sequence<beans::PropertyValue> aArgs;
+ SdDrawDocument* pDoc = pXImpressDocument->GetDocShell()->GetDoc();
+
+ // Create second view
+ SfxLokHelper::createView();
+ pXImpressDocument->initializeForTiledRendering(aArgs);
+ ViewCallback aView2;
+ SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView2);
+ int nView2 = SfxLokHelper::getView();
+
+ // the document has 8 slides
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(8), pDoc->GetSdPageCount(PageKind::Standard));
+
+ // Switch to 5th page in 2nd view
+ pXImpressDocument->setPart(4);
+
+ // Insert slide in 1st view
+ SfxLokHelper::setView(nView1);
+ comphelper::dispatchCommand(".uno:InsertPage", aArgs);
+ Scheduler::ProcessEventsToIdle();
+
+ // See if the current slide number changed in 2nd view too
+ SfxLokHelper::setView(nView2);
+ CPPUNIT_ASSERT_EQUAL(5, pXImpressDocument->getPart());
+
+ // Delete the page in 1st view now
+ SfxLokHelper::setView(nView1);
+ comphelper::dispatchCommand(".uno:DeletePage", aArgs);
+ Scheduler::ProcessEventsToIdle();
+
+ // See if current slide number changed in 2nd view too
+ SfxLokHelper::setView(nView2);
+ CPPUNIT_ASSERT_EQUAL(4, pXImpressDocument->getPart());
+
+ mxComponent->dispose();
+ mxComponent.clear();
+
+ comphelper::LibreOfficeKit::setActive(false);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdTiledRenderingTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 945056d55f71..8d9ec166e3c8 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -85,6 +85,8 @@ using namespace com::sun::star::xml::dom;
using ::com::sun::star::uno::Reference;
+sal_uInt16 SdPage::mnLastPageId = 1;
+
/*************************************************************************
|*
|* Ctor
@@ -115,6 +117,7 @@ SdPage::SdPage(SdDrawDocument& rNewDoc, bool bMasterPage)
, mnTransitionFadeColor(0)
, mfTransitionDuration(2.0)
, mbIsPrecious(true)
+, mnPageId(mnLastPageId++)
{
// The name of the layout of the page is used by SVDRAW to determine the
// presentation template of the outline objects. Therefore, it already
diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index e8f119fa5d3e..33c736b7162e 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -370,6 +370,7 @@ SdPage::SdPage(const SdPage& rSrcPage)
: FmFormPage(rSrcPage)
, SdrObjUserCall()
, mpItems(nullptr)
+, mnPageId(mnLastPageId++)
{
mePageKind = rSrcPage.mePageKind;
meAutoLayout = rSrcPage.meAutoLayout;
diff --git a/sd/source/ui/inc/DrawViewShell.hxx b/sd/source/ui/inc/DrawViewShell.hxx
index 20543b0fcd99..30109b5a98bf 100644
--- a/sd/source/ui/inc/DrawViewShell.hxx
+++ b/sd/source/ui/inc/DrawViewShell.hxx
@@ -270,6 +270,7 @@ public:
bool IsInputLocked() const { return mnLockCount > 0UL; }
sal_uInt16 GetCurPageId() { return maTabControl->GetCurPageId(); }
+ sal_uInt16 GetCurPagePos() { return maTabControl->GetCurPagePos(); }
/** Show controls of the UI or hide them, depending on the given flag.
Do not call this method directly. Call the method at ViewShellBase
diff --git a/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx b/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
index 6c026415b04f..ac9356d5df6a 100644
--- a/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
@@ -173,7 +173,8 @@ void CurrentSlideManager::SetCurrentSlideAtViewShellBase (const SharedPageDescri
{
sal_uInt16 nPageNumber = (rpDescriptor->GetPage()->GetPageNum()-1)/2;
pDrawViewShell->SwitchPage(nPageNumber);
- pDrawViewShell->GetPageTabControl().SetCurPageId(nPageNumber+1);
+ TabControl& rPageTabControl = pDrawViewShell->GetPageTabControl();
+ rPageTabControl.SetCurPageId(rPageTabControl.GetPageId(nPageNumber));
}
}
}
@@ -190,7 +191,8 @@ void CurrentSlideManager::SetCurrentSlideAtTabControl (const SharedPageDescripto
if (pDrawViewShell)
{
sal_uInt16 nPageNumber = (rpDescriptor->GetPage()->GetPageNum()-1)/2;
- pDrawViewShell->GetPageTabControl().SetCurPageId(nPageNumber+1);
+ TabControl& rPageTabControl = pDrawViewShell->GetPageTabControl();
+ rPageTabControl.SetCurPageId(rPageTabControl.GetPageId(nPageNumber));
}
}
}
diff --git a/sd/source/ui/uitest/uiobject.cxx b/sd/source/ui/uitest/uiobject.cxx
index f47e1311b3d7..668efa0c7e3b 100644
--- a/sd/source/ui/uitest/uiobject.cxx
+++ b/sd/source/ui/uitest/uiobject.cxx
@@ -89,7 +89,7 @@ StringMap ImpressWindowUIObject::get_state()
StringMap aMap = WindowUIObject::get_state();
aMap["SelectedText"] = getViewShell(mxWindow)->GetSelectionText(false);
- aMap["CurrentSlide"] = OUString::number(getViewShell(mxWindow)->GetCurPageId());
+ aMap["CurrentSlide"] = OUString::number(getViewShell(mxWindow)->GetCurPagePos() + 1);
return aMap;
}
diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx
index 88383e63cc12..1a58a2102333 100644
--- a/sd/source/ui/view/Outliner.cxx
+++ b/sd/source/ui/view/Outliner.cxx
@@ -963,7 +963,7 @@ void SdOutliner::RememberStartPosition()
{
meStartViewMode = pDrawViewShell->GetPageKind();
meStartEditMode = pDrawViewShell->GetEditMode();
- mnStartPageIndex = pDrawViewShell->GetCurPageId() - 1;
+ mnStartPageIndex = pDrawViewShell->GetCurPagePos();
}
if (mpView != nullptr)
diff --git a/sd/source/ui/view/OutlinerIterator.cxx b/sd/source/ui/view/OutlinerIterator.cxx
index d81f60b8a104..0126a1d3a57b 100644
--- a/sd/source/ui/view/OutlinerIterator.cxx
+++ b/sd/source/ui/view/OutlinerIterator.cxx
@@ -316,7 +316,7 @@ sal_Int32 OutlinerContainer::GetPageIndex (
{
case CURRENT:
if (pDrawViewShell.get())
- nPageIndex = pDrawViewShell->GetCurPageId() - 1;
+ nPageIndex = pDrawViewShell->GetCurPagePos();
else
{
const SdPage* pPage = rpViewShell->GetActualPage();
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index 598ec11227c8..0261657f1c60 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -985,8 +985,7 @@ int ViewShellBase::getPart() const
if (DrawViewShell* pDrawViewShell = dynamic_cast<DrawViewShell*>(pViewShell))
{
- // curPageId seems to start at 1
- return pDrawViewShell->GetCurPageId() - 1;
+ return pDrawViewShell->GetCurPagePos();
}
return 0;
diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx
index f17f1c11a175..76129051be5a 100644
--- a/sd/source/ui/view/drviews1.cxx
+++ b/sd/source/ui/view/drviews1.cxx
@@ -328,7 +328,7 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
{
ViewShellManager::UpdateLock aLock (GetViewShellBase().GetViewShellManager());
- sal_uInt16 nActualPageNum = 0;
+ sal_uInt16 nActualPageId = maTabControl->GetPageId(0);
GetViewShellBase().GetDrawController().FireChangeEditMode (eEMode == EditMode::MasterPage);
GetViewShellBase().GetDrawController().FireChangeLayerMode (bIsLayerModeActive);
@@ -397,17 +397,17 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
{
pPage = GetDoc()->GetSdPage(i, mePageKind);
OUString aPageName = pPage->GetName();
- maTabControl->InsertPage(i + 1, aPageName);
+ maTabControl->InsertPage(pPage->getPageId(), aPageName);
- if ( pPage->IsSelected() && nActualPageNum == 0 )
+ if ( pPage->IsSelected() )
{
- nActualPageNum = i;
+ nActualPageId = pPage->getPageId();
}
}
- maTabControl->SetCurPageId(nActualPageNum + 1);
+ maTabControl->SetCurPageId(nActualPageId);
- SwitchPage(nActualPageNum);
+ SwitchPage(maTabControl->GetPagePos(nActualPageId));
//tdf#102343 re-enable common undo on switch back from master mode
mpDrawView->GetModel()->SetDisableTextEditUsesCommonUndoManager(false);
@@ -427,7 +427,7 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
}
maTabControl->Clear();
- sal_uInt16 nActualMasterPageNum = 0;
+ sal_uInt16 nActualMasterPageId = maTabControl->GetPageId(0);
sal_uInt16 nMasterPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
for (sal_uInt16 i = 0; i < nMasterPageCnt; i++)
@@ -438,16 +438,16 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
if (nPos != -1)
aLayoutName = aLayoutName.copy(0, nPos);
- maTabControl->InsertPage(i + 1, aLayoutName);
+ maTabControl->InsertPage(pMaster->getPageId(), aLayoutName);
if (&(mpActualPage->TRG_GetMasterPage()) == pMaster)
{
- nActualMasterPageNum = i;
+ nActualMasterPageId = pMaster->getPageId();
}
}
- maTabControl->SetCurPageId(nActualMasterPageNum + 1);
- SwitchPage(nActualMasterPageNum);
+ maTabControl->SetCurPageId(nActualMasterPageId);
+ SwitchPage(maTabControl->GetPagePos(nActualMasterPageId));
//tdf#102343 changing attributes of textboxes in master typically
//changes the stylesheet they are linked to, so if the common
@@ -477,7 +477,7 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
// Set the tab control only for draw pages. For master page
// this has been done already above.
if (meEditMode == EditMode::Page)
- maTabControl->SetCurPageId (nActualPageNum + 1);
+ maTabControl->SetCurPageId (nActualPageId);
}
ResetActualLayer();
@@ -494,6 +494,7 @@ void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
SetContextName(GetSidebarContextName());
}
+
}
/**
@@ -625,7 +626,7 @@ SdPage* DrawViewShell::getCurrentPage() const
GetDoc()->GetSdPageCount(mePageKind):
GetDoc()->GetMasterSdPageCount(mePageKind);
- sal_Int32 nCurrentPage = maTabControl->GetCurPageId() - 1;
+ sal_Int32 nCurrentPage = maTabControl->GetCurPagePos();
DBG_ASSERT( (nPageCount>0) && (nCurrentPage<nPageCount), "sd::DrawViewShell::getCurrentPage(), illegal page index!" );
if( (nPageCount < 0) || (nCurrentPage>=nPageCount) )
nCurrentPage = 0; // play safe here
@@ -649,12 +650,9 @@ void DrawViewShell::ResetActualPage()
if (!GetDoc())
return;
- sal_uInt16 nCurrentPage = maTabControl->GetCurPageId() - 1;
+ sal_uInt16 nCurrentPageId = maTabControl->GetCurPageId();
+ sal_uInt16 nCurrentPageNum = maTabControl->GetPagePos(nCurrentPageId);
sal_uInt16 nPageCount = (meEditMode == EditMode::Page)?GetDoc()->GetSdPageCount(mePageKind):GetDoc()->GetMasterSdPageCount(mePageKind);
- if (nPageCount > 0)
- nCurrentPage = std::min((sal_uInt16)(nPageCount - 1), nCurrentPage);
- else
- nCurrentPage = 0;
if (meEditMode == EditMode::Page)
{
@@ -668,19 +666,22 @@ void DrawViewShell::ResetActualPage()
{
pPage = GetDoc()->GetSdPage(i, mePageKind);
OUString aPageName = pPage->GetName();
- maTabControl->InsertPage(i + 1, aPageName);
+ maTabControl->InsertPage(pPage->getPageId(), aPageName);
- // correct selection recognition of the pages
- GetDoc()->SetSelected(pPage, i == nCurrentPage);
+ if (nCurrentPageId == pPage->getPageId())
+ {
+ nCurrentPageNum = i;
+ GetDoc()->SetSelected(pPage, true);
+ }
+ else
+ GetDoc()->SetSelected(pPage, false);
}
- maTabControl->SetCurPageId(nCurrentPage + 1);
+ maTabControl->SetCurPageId(maTabControl->GetPageId(nCurrentPageNum));
}
else // EditMode::MasterPage
{
- SdPage* pActualPage = GetDoc()->GetMasterSdPage(nCurrentPage, mePageKind);
maTabControl->Clear();
- sal_uInt16 nActualMasterPageNum = 0;
sal_uInt16 nMasterPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
for (sal_uInt16 i = 0; i < nMasterPageCnt; i++)
@@ -690,14 +691,14 @@ void DrawViewShell::ResetActualPage()
sal_Int32 nPos = aLayoutName.indexOf(SD_LT_SEPARATOR);
if (nPos != -1)
aLayoutName = aLayoutName.copy(0, nPos);
- maTabControl->InsertPage(i + 1, aLayoutName);
+ maTabControl->InsertPage(pMaster->getPageId(), aLayoutName);
- if (pActualPage == pMaster)
- nActualMasterPageNum = i;
+ if (pMaster->getPageId() == nCurrentPageId)
+ nCurrentPageNum = i;
}
- maTabControl->SetCurPageId(nActualMasterPageNum + 1);
- SwitchPage(nActualMasterPageNum);
+ maTabControl->SetCurPageId(maTabControl->GetPageId(nCurrentPageNum));
+ SwitchPage(nCurrentPageNum);
}
GetViewFrame()->GetDispatcher()->Execute(SID_SWITCHPAGE,
@@ -767,6 +768,7 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
83888 for details.) Therefore the nested calls are ignored (they
would jump to the wrong page anyway.)
*/
+
if (mbIsInSwitchPage)
return false;
mbIsInSwitchPage = true;
@@ -831,7 +833,7 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
sPageText = sPageText.copy(0, nPos);
if (pPV
&& pNewPage == dynamic_cast< SdPage* >( pPV->GetPage() )
- && sPageText == maTabControl->GetPageText(nSelectedPage+1))
+ && sPageText == maTabControl->GetPageText(maTabControl->GetPageId(nSelectedPage)))
{
// this slide is already visible
return true;
@@ -853,7 +855,7 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
SdPage* pCurrentPage = pPV ? dynamic_cast<SdPage*>(pPV->GetPage()) : nullptr;
if (pCurrentPage
&& pNewPage == pCurrentPage
- && maTabControl->GetPageText(nSelectedPage+1).equals(pNewPage->GetName()))
+ && maTabControl->GetPageText(maTabControl->GetPageId(nSelectedPage)).equals(pNewPage->GetName()))
{
// this slide is already visible
return true;
@@ -965,7 +967,7 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
}
mpDrawView->HideSdrPage();
- maTabControl->SetCurPageId(nSelectedPage+1);
+ maTabControl->SetCurPageId(maTabControl->GetPageId(nSelectedPage));
mpDrawView->ShowSdrPage(mpActualPage);
GetViewShellBase().GetDrawController().FireSwitchCurrentPage(mpActualPage);
@@ -993,9 +995,9 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
OUString aPageName = mpActualPage->GetName();
- if (maTabControl->GetPageText(nSelectedPage+1) != aPageName)
+ if (maTabControl->GetPageText(maTabControl->GetPageId(nSelectedPage)) != aPageName)
{
- maTabControl->SetPageText(nSelectedPage+1, aPageName);
+ maTabControl->SetPageText(maTabControl->GetPageId(nSelectedPage), aPageName);
}
}
else
@@ -1026,7 +1028,7 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
}
mpDrawView->HideSdrPage();
- maTabControl->SetCurPageId(nSelectedPage+1);
+ maTabControl->SetCurPageId(maTabControl->GetPageId(nSelectedPage));
SdPage* pMaster = GetDoc()->GetMasterSdPage(nSelectedPage, mePageKind);
@@ -1065,9 +1067,9 @@ bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
if (nPos != -1)
aLayoutName = aLayoutName.copy(0, nPos);
- if (maTabControl->GetPageText(nSelectedPage+1) != aLayoutName)
+ if (maTabControl->GetPageText(maTabControl->GetPageId(nSelectedPage)) != aLayoutName)
{
- maTabControl->SetPageText(nSelectedPage+1, aLayoutName);
+ maTabControl->SetPageText(maTabControl->GetPageId(nSelectedPage), aLayoutName);
}
if( mePageKind == PageKind::Handout )
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 54b2fac8f734..683b6fbfb187 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -383,7 +383,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
{
mpDrawView->SdrEndTextEdit();
}
- sal_uInt16 nPage = maTabControl->GetCurPageId() - 1;
+ sal_uInt16 nPage = maTabControl->GetCurPagePos();
mpActualPage = GetDoc()->GetSdPage(nPage, mePageKind);
::sd::ViewShell::mpImpl->ProcessModifyPageSlot (
rReq,
@@ -420,10 +420,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
mpDrawView->SdrEndTextEdit();
}
- sal_uInt16 nPageId = maTabControl->GetCurPageId();
+ sal_uInt16 nPage = maTabControl->GetCurPagePos();
SdPage* pCurrentPage = ( GetEditMode() == EditMode::Page )
- ? GetDoc()->GetSdPage( nPageId - 1, GetPageKind() )
- : GetDoc()->GetMasterSdPage( nPageId - 1, GetPageKind() );
+ ? GetDoc()->GetSdPage( nPage, GetPageKind() )
+ : GetDoc()->GetMasterSdPage( nPage, GetPageKind() );
OUString aTitle = SD_RESSTR(STR_TITLE_RENAMESLIDE);
OUString aDescr = SD_RESSTR(STR_DESC_RENAMESLIDE);
@@ -443,7 +443,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
aNameDlg->GetName( aNewName );
if (aNewName != aPageName)
{
- bool bResult = RenameSlide( nPageId, aNewName );
+ bool bResult = RenameSlide( maTabControl->GetPageId(nPage), aNewName );
DBG_ASSERT( bResult, "Couldn't rename slide" );
}
}
diff --git a/sd/source/ui/view/drviews3.cxx b/sd/source/ui/view/drviews3.cxx
index e1655ac096e0..e246a3e080a2 100644
--- a/sd/source/ui/view/drviews3.cxx
+++ b/sd/source/ui/view/drviews3.cxx
@@ -142,7 +142,7 @@ void DrawViewShell::ExecCtrl(SfxRequest& rReq)
if (! pArgs)
{
- nSelectedPage = maTabControl->GetCurPageId() - 1;
+ nSelectedPage = maTabControl->GetCurPagePos();
}
else if (pArgs->Count () == 2)
{
diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx
index 3ce20cdb5796..b70b424eb046 100644
--- a/sd/source/ui/view/drviews4.cxx
+++ b/sd/source/ui/view/drviews4.cxx
@@ -74,7 +74,7 @@ using namespace ::com::sun::star::drawing;
void DrawViewShell::DeleteActualPage()
{
- sal_uInt16 nPage = maTabControl->GetCurPageId() - 1;
+ sal_uInt16 nPage = maTabControl->GetCurPagePos();
mpDrawView->SdrEndTextEdit();
diff --git a/sd/source/ui/view/drviews5.cxx b/sd/source/ui/view/drviews5.cxx
index 7dca113d400e..ff0fe05e7319 100644
--- a/sd/source/ui/view/drviews5.cxx
+++ b/sd/source/ui/view/drviews5.cxx
@@ -354,7 +354,7 @@ void DrawViewShell::WriteFrameViewData()
mpFrameView->SetSelectedPage(0);
else
{
- mpFrameView->SetSelectedPage( maTabControl->GetCurPageId() - 1 );
+ mpFrameView->SetSelectedPage( maTabControl->GetCurPagePos() );
}
mpFrameView->SetViewShEditMode(meEditMode);
diff --git a/sd/source/ui/view/drviewsa.cxx b/sd/source/ui/view/drviewsa.cxx
index 84ed10d6aa6f..31ce3316ed54 100644
--- a/sd/source/ui/view/drviewsa.cxx
+++ b/sd/source/ui/view/drviewsa.cxx
@@ -666,7 +666,7 @@ void DrawViewShell::GetStatusBarState(SfxItemSet& rSet)
// Always show the slide/page number.
OUString aOUString = (nPageCount == nActivePageCount) ? SD_RESSTR(STR_SD_PAGE_COUNT) : SD_RESSTR(STR_SD_PAGE_COUNT_CUSTOM);
- aOUString = aOUString.replaceFirst("%1", OUString::number(maTabControl->GetCurPageId()));
+ aOUString = aOUString.replaceFirst("%1", OUString::number(maTabControl->GetCurPagePos() + 1));
aOUString = aOUString.replaceFirst("%2", OUString::number(nPageCount));
if(nPageCount != nActivePageCount)
aOUString = aOUString.replaceFirst("%3", OUString::number(nActivePageCount));
diff --git a/sd/source/ui/view/drviewsb.cxx b/sd/source/ui/view/drviewsb.cxx
index e0412ae11acc..258eaeab56f1 100644
--- a/sd/source/ui/view/drviewsb.cxx
+++ b/sd/source/ui/view/drviewsb.cxx
@@ -76,7 +76,7 @@ bool DrawViewShell::RenameSlide( sal_uInt16 nPageId, const OUString & rName )
if( GetEditMode() == EditMode::Page )
{
- pPageToRename = GetDoc()->GetSdPage( nPageId - 1, ePageKind );
+ pPageToRename = GetDoc()->GetSdPage( maTabControl->GetPagePos(nPageId), ePageKind );
// Undo
SdPage* pUndoPage = pPageToRename;
@@ -98,14 +98,14 @@ bool DrawViewShell::RenameSlide( sal_uInt16 nPageId, const OUString & rName )
if( ePageKind == PageKind::Standard )
{
// also rename notes-page
- SdPage* pNotesPage = GetDoc()->GetSdPage( nPageId - 1, PageKind::Notes );
+ SdPage* pNotesPage = GetDoc()->GetSdPage( maTabControl->GetPagePos(nPageId), PageKind::Notes );
pNotesPage->SetName( rName );
}
}
else
{
// rename MasterPage -> rename LayoutTemplate
- pPageToRename = GetDoc()->GetMasterSdPage( nPageId - 1, ePageKind );
+ pPageToRename = GetDoc()->GetMasterSdPage( maTabControl->GetPagePos(nPageId), ePageKind );
GetDoc()->RenameLayoutTemplate( pPageToRename->GetLayoutName(), rName );
}
@@ -131,7 +131,7 @@ bool DrawViewShell::RenameSlide( sal_uInt16 nPageId, const OUString & rName )
if (pSlideSorterViewShell != nullptr)
{
pSlideSorterViewShell->GetSlideSorter().GetController().PageNameHasChanged(
- nPageId-1, rName);
+ maTabControl->GetPagePos(nPageId), rName);
}
}
@@ -143,7 +143,7 @@ IMPL_LINK( DrawViewShell, RenameSlideHdl, AbstractSvxNameDialog&, rDialog, bool
OUString aNewName;
rDialog.GetName( aNewName );
- SdPage* pCurrentPage = GetDoc()->GetSdPage( maTabControl->GetCurPageId() - 1, GetPageKind() );
+ SdPage* pCurrentPage = GetDoc()->GetSdPage( maTabControl->GetCurPagePos(), GetPageKind() );
return pCurrentPage && ( aNewName == pCurrentPage->GetName() || GetDocSh()->IsNewPageNameValid( aNewName ) );
}