summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2016-05-27 15:37:18 +0200
committerMichael Meeks <michael.meeks@collabora.com>2016-05-31 15:47:17 +0000
commite61bc7358880189bf084b6b58cb4c9e4f7ccb75f (patch)
tree2e54106fc0897c62fc4d4ee06c4f560914ec9a72
parentbc1fbf9bd866091ed9b7c1f63879bfd264abf4e1 (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/25549 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.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 376ba7a97844..75c09cc6a91b 100644
--- a/forms/source/component/FormComponent.cxx
+++ b/forms/source/component/FormComponent.cxx
@@ -2047,7 +2047,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 041825e5a55f..b6f99bf42344 100644
--- a/svx/source/fmcomp/fmgridif.cxx
+++ b/svx/source/fmcomp/fmgridif.cxx
@@ -1572,8 +1572,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);
}