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]

Reply via email to