[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - forms/source svx/source

Lionel Elie Mamane lionel at mamane.lu
Tue May 31 09:51:00 UTC 2016


 forms/source/component/FormComponent.cxx |    2 +-
 svx/source/fmcomp/fmgridif.cxx           |   13 ++++++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

New commits:
commit 2b7ba67fa9041a994118bb52be5d32e5d6bc0490
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri May 27 15:37:18 2016 +0200

    tdf#93403 check for changed DataSource on all Controls on form reload
    
    1) OBoundControlModel: when reload() asks us to connect to database column,
       redo it even if it was previously done.
    
    2) FmXGridPeer: when getting Reloaded event that we subscribed to
       (and specifically from frm::ODatabaseFrom), pass along the event
       to all columns before we treat it. The columns (controls) are
       themselves subscribed to it, but they may get the event after us,
       which means our treatment still uses stale data, which we continue
       to display.
    
       The column controls should continue to subscribe by themselves for
       the case that they are not in a grid, but direct children of the
       form.
    
    Change-Id: I0cbcf2dc792e8650157a69ddc414d755de0e549a
    Reviewed-on: https://gerrit.libreoffice.org/25553
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/forms/source/component/FormComponent.cxx b/forms/source/component/FormComponent.cxx
index 7d66f42..fd7b2c7 100644
--- a/forms/source/component/FormComponent.cxx
+++ b/forms/source/component/FormComponent.cxx
@@ -2039,7 +2039,7 @@ void OBoundControlModel::impl_connectDatabaseColumn_noNotify( bool _bFromReload
     OSL_ENSURE( xRowSet.is(), "OBoundControlModel::impl_connectDatabaseColumn_noNotify: no row set!" );
     if ( !xRowSet.is() )
         return;
-    if ( !hasField() )
+    if ( !hasField() || _bFromReload )
     {
         // connect to the column
         connectToField( xRowSet );
diff --git a/svx/source/fmcomp/fmgridif.cxx b/svx/source/fmcomp/fmgridif.cxx
index b1460e4..fbb6d18 100644
--- a/svx/source/fmcomp/fmgridif.cxx
+++ b/svx/source/fmcomp/fmgridif.cxx
@@ -1568,8 +1568,19 @@ void FmXGridPeer::unloading(const EventObject& /*aEvent*/) throw( RuntimeExcepti
 }
 
 
-void FmXGridPeer::reloaded(const EventObject& /*aEvent*/) throw( RuntimeException, std::exception )
+void FmXGridPeer::reloaded(const EventObject& aEvent) throw( RuntimeException, std::exception )
 {
+    {
+        const sal_Int32 cnt = m_xColumns->getCount();
+        for(sal_Int32 i=0; i<cnt; ++i)
+        {
+            Reference< XLoadListener> xll(m_xColumns->getByIndex(i), UNO_QUERY);
+            if(xll.is())
+            {
+                xll->reloaded(aEvent);
+            }
+        }
+    }
     updateGrid(m_xCursor);
 }
 


More information about the Libreoffice-commits mailing list