diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-04-09 11:23:48 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-04-10 21:23:21 +0200 |
commit | 3d648f76ac90fe8e28691313d0d4e78a8278e511 (patch) | |
tree | f3e0de959d8ddff61a9ff4af79e481bec25aa29d /sc/source/ui/app | |
parent | 47500ab25b9c5bbeeb6fde3866bdd924948fd88a (diff) |
weld ScCorrelationDialog
this is first of the calc dialogs with a range selector, so some temp
scaffolding is required during interim case of both welded/unwelded
in existence
Change-Id: I5480179092da7b56864cef066af781b35f735ebc
Reviewed-on: https://gerrit.libreoffice.org/70474
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc/source/ui/app')
-rw-r--r-- | sc/source/ui/app/scmod.cxx | 112 |
1 files changed, 94 insertions, 18 deletions
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index dcae91f597b8..7235c02076fb 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -1567,10 +1567,20 @@ bool ScModule::IsModalMode(SfxObjectShell* pDocSh) SfxChildWindow* pChildWnd = lcl_GetChildWinFromCurrentView( m_nCurRefDlgId ); if ( pChildWnd ) { - IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); - assert(pRefDlg); - bIsModal = pChildWnd->IsVisible() && pRefDlg && - !( pRefDlg->IsRefInputMode() && pRefDlg->IsDocAllowed(pDocSh) ); + if (pChildWnd->GetWindow()) + { + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); + assert(pRefDlg); + bIsModal = pChildWnd->IsVisible() && pRefDlg && + !( pRefDlg->IsRefInputMode() && pRefDlg->IsDocAllowed(pDocSh) ); + } + if (pChildWnd->GetController()) + { + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetController().get()); + assert(pRefDlg); + bIsModal = pChildWnd->IsVisible() && pRefDlg && + !( pRefDlg->IsRefInputMode() && pRefDlg->IsDocAllowed(pDocSh) ); + } } } else if (pDocSh) @@ -1642,9 +1652,18 @@ bool ScModule::IsFormulaMode() SfxChildWindow* pChildWnd = lcl_GetChildWinFromCurrentView( m_nCurRefDlgId ); if ( pChildWnd ) { - IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); - assert(pRefDlg); - bIsFormula = pChildWnd->IsVisible() && pRefDlg && pRefDlg->IsRefInputMode(); + if (pChildWnd->GetWindow()) + { + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); + assert(pRefDlg); + bIsFormula = pChildWnd->IsVisible() && pRefDlg && pRefDlg->IsRefInputMode(); + } + if (pChildWnd->GetController()) + { + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetController().get()); + assert(pRefDlg); + bIsFormula = pChildWnd->IsVisible() && pRefDlg && pRefDlg->IsRefInputMode(); + } } } else @@ -1694,14 +1713,29 @@ void ScModule::SetReference( const ScRange& rRef, ScDocument* pDoc, aNew.aEnd.SetTab(nEndTab); } - IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); - assert(pRefDlg); - if(pRefDlg) + if (pChildWnd->GetWindow()) { - // hide the (color) selection now instead of later from LoseFocus, - // don't abort the ref input that causes this call (bDoneRefMode = sal_False) - pRefDlg->HideReference( false ); - pRefDlg->SetReference( aNew, pDoc ); + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); + assert(pRefDlg); + if(pRefDlg) + { + // hide the (color) selection now instead of later from LoseFocus, + // don't abort the ref input that causes this call (bDoneRefMode = sal_False) + pRefDlg->HideReference( false ); + pRefDlg->SetReference( aNew, pDoc ); + } + } + if (pChildWnd->GetController()) + { + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetController().get()); + assert(pRefDlg); + if(pRefDlg) + { + // hide the (color) selection now instead of later from LoseFocus, + // don't abort the ref input that causes this call (bDoneRefMode = sal_False) + pRefDlg->HideReference( false ); + pRefDlg->SetReference( aNew, pDoc ); + } } } } @@ -1760,11 +1794,23 @@ void ScModule::EndReference() OSL_ENSURE( pChildWnd, "NoChildWin" ); if ( pChildWnd ) { - IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); - assert(pRefDlg); - if(pRefDlg) + if (pChildWnd->GetWindow()) { - pRefDlg->SetActive(); + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetWindow()); + assert(pRefDlg); + if(pRefDlg) + { + pRefDlg->SetActive(); + } + } + if (pChildWnd->GetController()) + { + IAnyRefDialog* pRefDlg = dynamic_cast<IAnyRefDialog*>(pChildWnd->GetController().get()); + assert(pRefDlg); + if(pRefDlg) + { + pRefDlg->SetActive(); + } } } } @@ -2161,6 +2207,36 @@ void ScModule::UnregisterRefWindow( sal_uInt16 nSlotId, vcl::Window *pWnd ) m_mapRefWindow.erase( nSlotId ); } +void ScModule::RegisterRefController( sal_uInt16 nSlotId, SfxModelessDialogController *pWnd ) +{ + std::vector<SfxModelessDialogController*> & rlRefWindow = m_mapRefController[nSlotId]; + + if( std::find( rlRefWindow.begin(), rlRefWindow.end(), pWnd ) == rlRefWindow.end() ) + { + rlRefWindow.emplace_back(pWnd ); + } +} + +void ScModule::UnregisterRefController( sal_uInt16 nSlotId, SfxModelessDialogController *pWnd ) +{ + auto iSlot = m_mapRefController.find( nSlotId ); + + if( iSlot == m_mapRefController.end() ) + return; + + std::vector<SfxModelessDialogController* > & rlRefWindow = iSlot->second; + + auto i = std::find( rlRefWindow.begin(), rlRefWindow.end(), pWnd ); + + if( i == rlRefWindow.end() ) + return; + + rlRefWindow.erase( i ); + + if( rlRefWindow.empty() ) + m_mapRefController.erase( nSlotId ); +} + vcl::Window * ScModule::Find1RefWindow( sal_uInt16 nSlotId, vcl::Window *pWndAncestor ) { if (!pWndAncestor) |