summaryrefslogtreecommitdiff
path: root/vcl/source/control
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-09-05 12:22:38 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-09-12 20:28:14 +0200
commit8c66efa030e98cfdf5da20be368566d64e43c5d1 (patch)
tree88c9fb335349fd1b7b285d46108e5d41a3c9aac4 /vcl/source/control
parent8150219824a1d08c4a22fd8bb7cc63fe2aa88074 (diff)
weld OCopyTableWizard cluster
Change-Id: I52547defb0e7ba328ec20d41a955e545556ffd16 note: get the toplevel parent by getting it from the XInteractionHandler Reviewed-on: https://gerrit.libreoffice.org/78751 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source/control')
-rw-r--r--vcl/source/control/wizardmachine.cxx45
1 files changed, 42 insertions, 3 deletions
diff --git a/vcl/source/control/wizardmachine.cxx b/vcl/source/control/wizardmachine.cxx
index 758ba1c4c67a..fb309c46f8ec 100644
--- a/vcl/source/control/wizardmachine.cxx
+++ b/vcl/source/control/wizardmachine.cxx
@@ -755,12 +755,14 @@ namespace vcl
{
if (m_pImpl)
{
- for (WizardState i = 0; i < m_pImpl->nFirstUnknownPage; ++i)
+ while (m_pFirstPage)
{
- TabPage *pPage = GetPage(i);
+ VclPtr<TabPage> pPage = m_pFirstPage->mpPage;
+ RemovePage(m_pFirstPage->mpPage);
if (pPage)
- pPage->disposeOnce();
+ pPage.disposeAndClear();
}
+
m_pImpl.reset();
}
}
@@ -1078,6 +1080,18 @@ namespace vcl
return false;
}
+ bool WizardMachine::ShowNextPage()
+ {
+ return ShowPage(m_nCurState + 1);
+ }
+
+ bool WizardMachine::ShowPrevPage()
+ {
+ if (!m_nCurState)
+ return false;
+ return ShowPage(m_nCurState - 1);
+ }
+
bool WizardMachine::travelPrevious()
{
DBG_ASSERT(!m_pImpl->aStateHistory.empty(), "WizardMachine::travelPrevious: have no previous page!");
@@ -1236,6 +1250,31 @@ namespace vcl
}
}
+ void WizardMachine::RemovePage( TabPage* pPage )
+ {
+ ImplWizPageData* pPrevPageData = nullptr;
+ ImplWizPageData* pPageData = m_pFirstPage;
+ while ( pPageData )
+ {
+ if ( pPageData->mpPage == pPage )
+ {
+ if (pPrevPageData)
+ pPrevPageData->mpNext = pPageData->mpNext;
+ else
+ m_pFirstPage = pPageData->mpNext;
+ if (pPage == m_xCurTabPage)
+ m_xCurTabPage.clear();
+ delete pPageData;
+ return;
+ }
+
+ pPrevPageData = pPageData;
+ pPageData = pPageData->mpNext;
+ }
+
+ OSL_FAIL( "WizardMachine::RemovePage() - Page not in list" );
+ }
+
void WizardMachine::SetPage(WizardState nLevel, TabPage* pPage)
{
sal_uInt16 nTempLevel = 0;