diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-09-05 12:22:38 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-09-12 20:28:14 +0200 |
commit | 8c66efa030e98cfdf5da20be368566d64e43c5d1 (patch) | |
tree | 88c9fb335349fd1b7b285d46108e5d41a3c9aac4 /vcl/source/control | |
parent | 8150219824a1d08c4a22fd8bb7cc63fe2aa88074 (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.cxx | 45 |
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; |