[Libreoffice-commits] core.git: dbaccess/source include/svtools svtools/source
Noel Grandin
noel.grandin at collabora.co.uk
Tue Jul 3 09:19:22 UTC 2018
dbaccess/source/ui/browser/dbtreeview.cxx | 20 ++-------
dbaccess/source/ui/browser/dbtreeview.hxx | 2
dbaccess/source/ui/browser/dsEntriesNoExp.cxx | 11 ++---
dbaccess/source/ui/browser/dsbrowserDnD.cxx | 7 +--
dbaccess/source/ui/browser/unodatbr.cxx | 54 +++++++++++---------------
dbaccess/source/ui/inc/unodatbr.hxx | 3 -
include/svtools/treelistbox.hxx | 2
svtools/source/contnr/treelistbox.cxx | 9 ----
8 files changed, 41 insertions(+), 67 deletions(-)
New commits:
commit 79cb267812f0c22919fddc4d60d381fa649f8d05
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Tue Jul 3 10:19:21 2018 +0200
no need to switch models in the SvTreeListBox
since we're replacing it completely anyhow.
which means we can remove DisconnectFromModel
Change-Id: I2f31d93eb95a641f3364d715111e70817c7e5087
Reviewed-on: https://gerrit.libreoffice.org/56849
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/dbaccess/source/ui/browser/dbtreeview.cxx b/dbaccess/source/ui/browser/dbtreeview.cxx
index 75efb9995aa5..38e94cbcf199 100644
--- a/dbaccess/source/ui/browser/dbtreeview.cxx
+++ b/dbaccess/source/ui/browser/dbtreeview.cxx
@@ -50,18 +50,15 @@ DBTreeView::~DBTreeView()
void DBTreeView::dispose()
{
- if (m_pTreeListBox)
- {
- if (m_pTreeListBox->GetModel())
- {
- m_pTreeListBox->GetModel()->RemoveView(m_pTreeListBox);
- m_pTreeListBox->DisconnectFromModel();
- }
- }
m_pTreeListBox.disposeAndClear();
vcl::Window::dispose();
}
+SvTreeList* DBTreeView::GetTreeModel()
+{
+ return m_pTreeListBox->GetModel();
+}
+
void DBTreeView::SetPreExpandHandler(const Link<SvTreeListEntry*,bool>& _rHdl)
{
m_pTreeListBox->SetPreExpandHandler(_rHdl);
@@ -78,13 +75,6 @@ void DBTreeView::Resize()
m_pTreeListBox->SetPosSizePixel(Point(0,0),GetOutputSizePixel());
}
-void DBTreeView::setModel(SvTreeList* _pTreeModel)
-{
- if (_pTreeModel)
- _pTreeModel->InsertView(m_pTreeListBox);
- m_pTreeListBox->SetModel(_pTreeModel);
-}
-
void DBTreeView::setSelChangeHdl( const Link<LinkParamNone*,void>& _rHdl )
{
m_pTreeListBox->SetSelChangeHdl( _rHdl );
diff --git a/dbaccess/source/ui/browser/dbtreeview.hxx b/dbaccess/source/ui/browser/dbtreeview.hxx
index 40994107f3d9..6ff5959e9ae5 100644
--- a/dbaccess/source/ui/browser/dbtreeview.hxx
+++ b/dbaccess/source/ui/browser/dbtreeview.hxx
@@ -52,7 +52,7 @@ namespace dbaui
void setCopyHandler(const Link<LinkParamNone*,void>& _rHdl);
- void setModel(SvTreeList* _pTreeModel);
+ SvTreeList* GetTreeModel();
void setSelChangeHdl(const Link<LinkParamNone*,void>& _rHdl);
DBTreeListBox& getListBox() const { return *m_pTreeListBox; }
diff --git a/dbaccess/source/ui/browser/dsEntriesNoExp.cxx b/dbaccess/source/ui/browser/dsEntriesNoExp.cxx
index e5944d1969a0..1dd3a0991fb9 100644
--- a/dbaccess/source/ui/browser/dsEntriesNoExp.cxx
+++ b/dbaccess/source/ui/browser/dsEntriesNoExp.cxx
@@ -109,7 +109,7 @@ void SbaTableQueryBrowser::select(SvTreeListEntry* _pEntry, bool _bSelect)
if (pTextItem)
{
static_cast<OBoldListboxString*>(pTextItem)->emphasize(_bSelect);
- m_pTreeModel->InvalidateEntry(_pEntry);
+ m_pTreeView->GetTreeModel()->InvalidateEntry(_pEntry);
}
else {
OSL_FAIL("SbaTableQueryBrowser::select: invalid entry!");
@@ -121,7 +121,7 @@ void SbaTableQueryBrowser::selectPath(SvTreeListEntry* _pEntry, bool _bSelect)
while (_pEntry)
{
select(_pEntry, _bSelect);
- _pEntry = m_pTreeModel->GetParent(_pEntry);
+ _pEntry = m_pTreeView->GetTreeModel()->GetParent(_pEntry);
}
}
@@ -197,14 +197,15 @@ void SbaTableQueryBrowser::notifyHiContrastChanged()
{
if ( m_pTreeView )
{
+ auto pTreeModel = m_pTreeView->GetTreeModel();
// change all bitmap entries
- SvTreeListEntry* pEntryLoop = m_pTreeModel->First();
+ SvTreeListEntry* pEntryLoop = pTreeModel->First();
while ( pEntryLoop )
{
DBTreeListUserData* pData = static_cast<DBTreeListUserData*>(pEntryLoop->GetUserData());
if ( !pData )
{
- pEntryLoop = m_pTreeModel->Next(pEntryLoop);
+ pEntryLoop = pTreeModel->Next(pEntryLoop);
continue;
}
@@ -245,7 +246,7 @@ void SbaTableQueryBrowser::notifyHiContrastChanged()
break;
}
- pEntryLoop = m_pTreeModel->Next(pEntryLoop);
+ pEntryLoop = pTreeModel->Next(pEntryLoop);
}
}
}
diff --git a/dbaccess/source/ui/browser/dsbrowserDnD.cxx b/dbaccess/source/ui/browser/dsbrowserDnD.cxx
index dc34baf2443e..8ec849dac474 100644
--- a/dbaccess/source/ui/browser/dsbrowserDnD.cxx
+++ b/dbaccess/source/ui/browser/dsbrowserDnD.cxx
@@ -233,10 +233,11 @@ namespace dbaui
}
void SbaTableQueryBrowser::clearTreeModel()
{
- if (m_pTreeModel)
+ if (m_pTreeView)
{
+ auto pTreeModel = m_pTreeView->GetTreeModel();
// clear the user data of the tree model
- SvTreeListEntry* pEntryLoop = m_pTreeModel->First();
+ SvTreeListEntry* pEntryLoop = pTreeModel->First();
while (pEntryLoop)
{
DBTreeListUserData* pData = static_cast<DBTreeListUserData*>(pEntryLoop->GetUserData());
@@ -256,7 +257,7 @@ namespace dbaui
delete pData;
}
- pEntryLoop = m_pTreeModel->Next(pEntryLoop);
+ pEntryLoop = pTreeModel->Next(pEntryLoop);
}
}
m_pCurrentlyDisplayed = nullptr;
diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx
index 44fcb8688a07..6eb0557ceed3 100644
--- a/dbaccess/source/ui/browser/unodatbr.cxx
+++ b/dbaccess/source/ui/browser/unodatbr.cxx
@@ -213,7 +213,6 @@ SbaTableQueryBrowser::SbaTableQueryBrowser(const Reference< XComponentContext >&
,m_aTableCopyHelper(this)
,m_pTreeView(nullptr)
,m_pSplitter(nullptr)
- ,m_pTreeModel(nullptr)
,m_pCurrentlyDisplayed(nullptr)
,m_nAsyncDrop(nullptr)
,m_bQueryEscapeProcessing( false )
@@ -286,16 +285,12 @@ void SAL_CALL SbaTableQueryBrowser::disposing()
m_aSelectionListeners.disposeAndClear(aEvt);
m_aContextMenuInterceptors.disposeAndClear(aEvt);
- // reset the content's tree view: it holds a reference to our model which is to be deleted immediately,
- // and it will live longer than we do.
if (getBrowserView())
- getBrowserView()->setTreeView(nullptr);
-
- clearTreeModel();
- // clear the tree model
{
- std::unique_ptr<SvTreeList> aTemp(m_pTreeModel);
- m_pTreeModel = nullptr;
+ // Need to do some cleaup of the data pointed to the tree view entries before we remove the treeview
+ clearTreeModel();
+ m_pTreeView = nullptr;
+ getBrowserView()->setTreeView(nullptr);
}
// remove ourself as status listener
@@ -364,10 +359,9 @@ bool SbaTableQueryBrowser::Construct(vcl::Window* pParent)
getBrowserView()->setTreeView(m_pTreeView);
// fill view with data
- m_pTreeModel = new SvTreeList;
- m_pTreeModel->SetSortMode(SortAscending);
- m_pTreeModel->SetCompareHdl(LINK(this, SbaTableQueryBrowser, OnTreeEntryCompare));
- m_pTreeView->setModel(m_pTreeModel);
+ auto pTreeModel = m_pTreeView->GetTreeModel();
+ pTreeModel->SetSortMode(SortAscending);
+ pTreeModel->SetCompareHdl(LINK(this, SbaTableQueryBrowser, OnTreeEntryCompare));
m_pTreeView->setSelChangeHdl( LINK( this, SbaTableQueryBrowser, OnSelectionChange ) );
// TODO
@@ -2455,7 +2449,7 @@ SvTreeListEntry* SbaTableQueryBrowser::implGetConnectionEntry(SvTreeListEntry* _
DBTreeListUserData* pEntryData = static_cast< DBTreeListUserData* >( pCurrentEntry->GetUserData() );
while(pEntryData->eType != etDatasource )
{
- pCurrentEntry = m_pTreeModel->GetParent(pCurrentEntry);
+ pCurrentEntry = m_pTreeView->GetTreeModel()->GetParent(pCurrentEntry);
pEntryData = static_cast< DBTreeListUserData* >( pCurrentEntry->GetUserData() );
}
return pCurrentEntry;
@@ -2477,11 +2471,11 @@ bool SbaTableQueryBrowser::implSelect( SvTreeListEntry* _pEntry )
return false;
}
- OSL_ENSURE(m_pTreeModel->HasParent(_pEntry), "SbaTableQueryBrowser::implSelect: invalid entry (1)!");
- OSL_ENSURE(m_pTreeModel->HasParent(m_pTreeModel->GetParent(_pEntry)), "SbaTableQueryBrowser::implSelect: invalid entry (2)!");
+ OSL_ENSURE(m_pTreeView->GetTreeModel()->HasParent(_pEntry), "SbaTableQueryBrowser::implSelect: invalid entry (1)!");
+ OSL_ENSURE(m_pTreeView->GetTreeModel()->HasParent(m_pTreeView->GetTreeModel()->GetParent(_pEntry)), "SbaTableQueryBrowser::implSelect: invalid entry (2)!");
// get the entry for the tables or queries
- SvTreeListEntry* pContainer = m_pTreeModel->GetParent(_pEntry);
+ SvTreeListEntry* pContainer = m_pTreeView->GetTreeModel()->GetParent(_pEntry);
DBTreeListUserData* pContainerData = static_cast<DBTreeListUserData*>(pContainer->GetUserData());
// get the entry for the datasource
@@ -2506,13 +2500,13 @@ bool SbaTableQueryBrowser::implSelect( SvTreeListEntry* _pEntry )
if ( etQueryContainer == pContainerData->eType )
{
SvTreeListEntry* pTemp = pContainer;
- while( m_pTreeModel->GetParent(pTemp) != pConnection )
+ while( m_pTreeView->GetTreeModel()->GetParent(pTemp) != pConnection )
{
sNameBuffer.insert(0,'/');
pString = static_cast<SvLBoxString*>(pTemp->GetFirstItem(SvLBoxItemType::String));
OSL_ENSURE(pString,"There must be a string item!");
sNameBuffer.insert(0,pString->GetText());
- pTemp = m_pTreeModel->GetParent(pTemp);
+ pTemp = m_pTreeView->GetTreeModel()->GetParent(pTemp);
}
}
OUString aName = sNameBuffer.makeStringAndClear();
@@ -2773,12 +2767,12 @@ void SAL_CALL SbaTableQueryBrowser::elementRemoved( const ContainerEvent& _rEven
pTemp->SetUserData(nullptr);
delete pData;
// the data could be null because we have a table which isn't correct
- m_pTreeModel->Remove(pTemp);
+ m_pTreeView->GetTreeModel()->Remove(pTemp);
}
else
{
// remove the entry from the model
- SvTreeListEntry* pChild = m_pTreeModel->FirstChild(pContainer);
+ SvTreeListEntry* pChild = m_pTreeView->GetTreeModel()->FirstChild(pContainer);
while(pChild)
{
if (m_pTreeView->getListBox().GetEntryText(pChild) == aName)
@@ -2786,7 +2780,7 @@ void SAL_CALL SbaTableQueryBrowser::elementRemoved( const ContainerEvent& _rEven
DBTreeListUserData* pData = static_cast<DBTreeListUserData*>(pChild->GetUserData());
pChild->SetUserData(nullptr);
delete pData;
- m_pTreeModel->Remove(pChild);
+ m_pTreeView->GetTreeModel()->Remove(pChild);
break;
}
pChild = pChild->NextSibling();
@@ -2834,7 +2828,7 @@ void SAL_CALL SbaTableQueryBrowser::elementReplaced( const ContainerEvent& _rEve
else
{
// find the entry for this name
- SvTreeListEntry* pChild = m_pTreeModel->FirstChild(pContainer);
+ SvTreeListEntry* pChild = m_pTreeView->GetTreeModel()->FirstChild(pContainer);
while(pChild)
{
if (m_pTreeView->getListBox().GetEntryText(pChild) == aName)
@@ -2921,9 +2915,9 @@ void SbaTableQueryBrowser::closeConnection(SvTreeListEntry* _pDSEntry, bool _bDi
unloadAndCleanup(_bDisposeConnection);
// collapse the query/table container
- for (SvTreeListEntry* pContainers = m_pTreeModel->FirstChild(_pDSEntry); pContainers; pContainers = pContainers->NextSibling())
+ for (SvTreeListEntry* pContainers = m_pTreeView->GetTreeModel()->FirstChild(_pDSEntry); pContainers; pContainers = pContainers->NextSibling())
{
- SvTreeListEntry* pElements = m_pTreeModel->FirstChild(pContainers);
+ SvTreeListEntry* pElements = m_pTreeView->GetTreeModel()->FirstChild(pContainers);
if ( pElements )
m_pTreeView->getListBox().Collapse(pContainers);
m_pTreeView->getListBox().EnableExpandHandler(pContainers);
@@ -2935,7 +2929,7 @@ void SbaTableQueryBrowser::closeConnection(SvTreeListEntry* _pDSEntry, bool _bDi
DBTreeListUserData* pData = static_cast<DBTreeListUserData*>(pRemove->GetUserData());
pRemove->SetUserData(nullptr);
delete pData;
- m_pTreeModel->Remove(pRemove);
+ m_pTreeView->GetTreeModel()->Remove(pRemove);
}
}
// collapse the entry itself
@@ -3273,7 +3267,7 @@ bool SbaTableQueryBrowser::getExistentConnectionFor( SvTreeListEntry* _pAnyEntry
bool SbaTableQueryBrowser::impl_isDataSourceEntry( SvTreeListEntry* _pEntry ) const
{
- return m_pTreeModel->GetRootLevelParent( _pEntry ) == _pEntry;
+ return m_pTreeView->GetTreeModel()->GetRootLevelParent( _pEntry ) == _pEntry;
}
bool SbaTableQueryBrowser::ensureConnection( SvTreeListEntry* _pDSEntry, void* pDSData, SharedConnection& _rConnection )
@@ -3596,7 +3590,7 @@ OUString SbaTableQueryBrowser::getPrivateTitle() const
OUString sTitle;
if ( m_pCurrentlyDisplayed )
{
- SvTreeListEntry* pContainer = m_pTreeModel->GetParent(m_pCurrentlyDisplayed);
+ SvTreeListEntry* pContainer = m_pTreeView->GetTreeModel()->GetParent(m_pCurrentlyDisplayed);
// get the entry for the datasource
SvTreeListEntry* pConnection = implGetConnectionEntry(pContainer);
OUString sName = m_pTreeView->getListBox().GetEntryText(m_pCurrentlyDisplayed);
@@ -3721,7 +3715,7 @@ void SbaTableQueryBrowser::impl_cleanupDataSourceEntry( const OUString& _rDataSo
// delete any user data of the child entries of the to-be-removed entry
std::pair<SvTreeListEntries::const_iterator, SvTreeListEntries::const_iterator> aIters =
- m_pTreeModel->GetChildIterators(pDataSourceEntry);
+ m_pTreeView->GetTreeModel()->GetChildIterators(pDataSourceEntry);
SvTreeListEntries::const_iterator it = aIters.first, itEnd = aIters.second;
@@ -3737,7 +3731,7 @@ void SbaTableQueryBrowser::impl_cleanupDataSourceEntry( const OUString& _rDataSo
DBTreeListUserData* pData = static_cast< DBTreeListUserData* >( pDataSourceEntry->GetUserData() );
pDataSourceEntry->SetUserData( nullptr );
delete pData;
- m_pTreeModel->Remove( pDataSourceEntry );
+ m_pTreeView->GetTreeModel()->Remove( pDataSourceEntry );
}
void SAL_CALL SbaTableQueryBrowser::revokedDatabaseLocation( const DatabaseRegistrationEvent& Event )
diff --git a/dbaccess/source/ui/inc/unodatbr.hxx b/dbaccess/source/ui/inc/unodatbr.hxx
index 49ee4e3b513e..1e4417c5df47 100644
--- a/dbaccess/source/ui/inc/unodatbr.hxx
+++ b/dbaccess/source/ui/inc/unodatbr.hxx
@@ -99,9 +99,8 @@ namespace dbaui
OUString m_sQueryCommand; // the command of the query currently loaded (if any)
//OUString m_sToBeLoaded; // contains the element name which should be loaded if any
- VclPtr<DBTreeView> m_pTreeView;
+ VclPtr<DBTreeView> m_pTreeView; // contains the datasources of the registry
VclPtr<Splitter> m_pSplitter;
- SvTreeList* m_pTreeModel; // contains the datasources of the registry
SvTreeListEntry* m_pCurrentlyDisplayed;
ImplSVEvent * m_nAsyncDrop;
diff --git a/include/svtools/treelistbox.hxx b/include/svtools/treelistbox.hxx
index 5bb92a84a005..248e9d8d4e80 100644
--- a/include/svtools/treelistbox.hxx
+++ b/include/svtools/treelistbox.hxx
@@ -582,8 +582,6 @@ public:
void SetNoAutoCurEntry( bool b );
- void DisconnectFromModel();
-
void EnableCheckButton( SvLBoxButtonData* );
void SetCheckButtonData( SvLBoxButtonData* );
void SetNodeBitmaps( const Image& rCollapsedNodeBmp, const Image& rExpandedNodeBmp );
diff --git a/svtools/source/contnr/treelistbox.cxx b/svtools/source/contnr/treelistbox.cxx
index 5d9bc907ae24..716a1a2cc00b 100644
--- a/svtools/source/contnr/treelistbox.cxx
+++ b/svtools/source/contnr/treelistbox.cxx
@@ -1402,15 +1402,6 @@ void SvTreeListBox::SetBaseModel( SvTreeList* pNewModel )
}
}
-void SvTreeListBox::DisconnectFromModel()
-{
- SvTreeList* pNewModel = new SvTreeList;
- pNewModel->SetRefCount( 0 ); // else this will never be deleted
- SvListView::SetModel( pNewModel );
-
- pImpl->SetModel( GetModel() );
-}
-
void SvTreeListBox::SetSublistOpenWithReturn()
{
pImpl->bSubLstOpRet = true;
More information about the Libreoffice-commits
mailing list