Tag: cws_dev300_dba31c User: fs Date: 2008-09-03 12:02:43+0000 Modified: dba/dbaccess/source/ui/browser/unodatbr.cxx
Log: #i93424# reworked the handling/notification of selection/changes of a DBTreeListBox File Changes: Directory: /dba/dbaccess/source/ui/browser/ =========================================== File [changed]: unodatbr.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/browser/unodatbr.cxx?r1=1.203&r2=1.203.24.1 Delta lines: +24 -20 --------------------- --- unodatbr.cxx 2008-07-25 07:49:06+0000 1.203 +++ unodatbr.cxx 2008-09-03 12:02:40+0000 1.203.24.1 @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: unodatbr.cxx,v $ - * $Revision: 1.203 $ + * $Revision: 1.203.24.1 $ * * This file is part of OpenOffice.org. * @@ -402,7 +402,7 @@ m_pTreeModel->SetSortMode(SortAscending); m_pTreeModel->SetCompareHdl(LINK(this, SbaTableQueryBrowser, OnTreeEntryCompare)); m_pTreeView->setModel(m_pTreeModel); - m_pTreeView->setSelectHdl(LINK(this, SbaTableQueryBrowser, OnSelectEntry)); + m_pTreeView->setSelChangeHdl( LINK( this, SbaTableQueryBrowser, OnSelectionChange ) ); // TODO getBrowserView()->getVclControl()->GetDataWindow().SetUniqueId(UID_DATABROWSE_DATAWINDOW); @@ -1771,8 +1771,10 @@ unloadAndCleanup( sal_False ); // reselect the entry - if(pSelected) - OnSelectEntry( pSelected ); + if ( pSelected ) + { + implSelect( pSelected ); + } else { Reference<XPropertySet> xProp(getRowSet(),UNO_QUERY); @@ -2020,8 +2022,6 @@ // nothing to to ... return 1L; - ::osl::MutexGuard aGuard(m_aEntryMutex); - SvLBoxEntry* pFirstParent = m_pTreeView->getListBox().GetRootLevelParent(_pParent); OSL_ENSURE(pFirstParent,"SbaTableQueryBrowser::OnExpandEntry: No rootlevelparent!"); @@ -2287,7 +2287,7 @@ { if ( _bSelectDirect ) { - OnSelectEntry(pCommand); + implSelect( pCommand ); } else m_pTreeView->getListBox().Select(pCommand); @@ -2309,11 +2309,18 @@ } //------------------------------------------------------------------------------ -IMPL_LINK(SbaTableQueryBrowser, OnSelectEntry, SvLBoxEntry*, _pEntry) +IMPL_LINK(SbaTableQueryBrowser, OnSelectionChange, void*, /*NOINTERESTEDIN*/) { - ::osl::MutexGuard aGuard(m_aEntryMutex); + return implSelect( m_pTreeView->getListBox().FirstSelected() ) ? 1L : 0L; +} - DBTreeListUserData* pEntryData = static_cast<DBTreeListUserData*>(_pEntry->GetUserData()); +//------------------------------------------------------------------------------ +bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry ) +{ + if ( !_pEntry ) + return false; + + DBTreeListUserData* pEntryData = static_cast< DBTreeListUserData* >( _pEntry->GetUserData() ); switch (pEntryData->eType) { case etTableOrView: @@ -2321,11 +2328,11 @@ break; default: // nothing to do - return 0L; + return false; } - OSL_ENSURE(m_pTreeModel->HasParent(_pEntry), "SbaTableQueryBrowser::OnSelectEntry: invalid entry (1)!"); - OSL_ENSURE(m_pTreeModel->HasParent(m_pTreeModel->GetParent(_pEntry)), "SbaTableQueryBrowser::OnSelectEntry: invalid entry (2)!"); + 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)!"); // get the entry for the tables or queries SvLBoxEntry* pContainer = m_pTreeModel->GetParent(_pEntry); @@ -2485,7 +2492,7 @@ if(e.TargetException >>= aSql) showError(SQLExceptionInfo(aSql)); else - OSL_ENSURE(sal_False, "SbaTableQueryBrowser::OnSelectEntry: something strange happended!"); + OSL_ENSURE(sal_False, "SbaTableQueryBrowser::implSelect: something strange happended!"); // reset the values xRowSetProps->setPropertyValue(PROPERTY_DATASOURCENAME,Any()); xRowSetProps->setPropertyValue(PROPERTY_ACTIVE_CONNECTION,Any()); @@ -2497,7 +2504,7 @@ xRowSetProps->setPropertyValue(PROPERTY_ACTIVE_CONNECTION,Any()); } } - return 0L; + return true; } // ----------------------------------------------------------------------------- @@ -2528,7 +2535,6 @@ void SAL_CALL SbaTableQueryBrowser::elementInserted( const ContainerEvent& _rEvent ) throw(RuntimeException) { vos::OGuard aSolarGuard( Application::GetSolarMutex() ); - ::osl::MutexGuard aGuard(m_aEntryMutex); Reference< XNameAccess > xNames(_rEvent.Source, UNO_QUERY); // first search for a definition container where we can insert this element @@ -2585,8 +2591,6 @@ void SAL_CALL SbaTableQueryBrowser::elementRemoved( const ContainerEvent& _rEvent ) throw(RuntimeException) { ::vos::OGuard aSolarGuard(Application::GetSolarMutex()); - ::osl::MutexGuard aGuard(m_aEntryMutex); - Reference< XNameAccess > xNames(_rEvent.Source, UNO_QUERY); // get the top-level representing the removed data source @@ -2695,7 +2699,7 @@ // ------------------------------------------------------------------------- void SAL_CALL SbaTableQueryBrowser::elementReplaced( const ContainerEvent& _rEvent ) throw(RuntimeException) { - ::osl::MutexGuard aGuard(m_aEntryMutex); + ::vos::OGuard aSolarGuard(Application::GetSolarMutex()); Reference< XNameAccess > xNames(_rEvent.Source, UNO_QUERY); SvLBoxEntry* pContainer = getEntryFromContainer(xNames); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
