Kaydet (Commit) 51c8d22e authored tarafından Lionel Elie Mamane's avatar Lionel Elie Mamane

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
üst 0df3760b
...@@ -2039,7 +2039,7 @@ void OBoundControlModel::impl_connectDatabaseColumn_noNotify( bool _bFromReload ...@@ -2039,7 +2039,7 @@ void OBoundControlModel::impl_connectDatabaseColumn_noNotify( bool _bFromReload
OSL_ENSURE( xRowSet.is(), "OBoundControlModel::impl_connectDatabaseColumn_noNotify: no row set!" ); OSL_ENSURE( xRowSet.is(), "OBoundControlModel::impl_connectDatabaseColumn_noNotify: no row set!" );
if ( !xRowSet.is() ) if ( !xRowSet.is() )
return; return;
if ( !hasField() ) if ( !hasField() || _bFromReload )
{ {
// connect to the column // connect to the column
connectToField( xRowSet ); connectToField( xRowSet );
......
...@@ -1568,8 +1568,19 @@ void FmXGridPeer::unloading(const EventObject& /*aEvent*/) throw( RuntimeExcepti ...@@ -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); updateGrid(m_xCursor);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment