summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2016-05-27 15:37:18 +0200
committerCaolán McNamara <caolanm@redhat.com>2016-05-31 09:50:29 +0000
commit2b7ba67fa9041a994118bb52be5d32e5d6bc0490 (patch)
tree60d3b688537d1e32438a481eb9bace3e60f909db
parent55f7843316b3ec24b008771cfe41afa5bcb5ea50 (diff)
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@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--forms/source/component/FormComponent.cxx2
-rw-r--r--svx/source/fmcomp/fmgridif.cxx13
2 files changed, 13 insertions, 2 deletions
diff --git a/forms/source/component/FormComponent.cxx b/forms/source/component/FormComponent.cxx
index 7d66f4213390..fd7b2c7608ac 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 b1460e4e06b5..fbb6d18f221e 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);
}