AKA http://cgit.freedesktop.org/libreoffice/core/commit/?id=08bdb40656898fc484f5200b63610a31369ddd87 InitController is also called from DbGridControl::RowModified, and there it seems it makes sense to call pColumn->UpdateFromField (that is, the content of the removed InitController). This makes the whole issue rather more complicated, since there are other implementors of InitController (derived classes of EditBrowseBox)... Need to understand things better. Although... RowModified is called from: 1) DbGridControl::FieldValueChanged, but there pColumn->UpdateFromField is called right before! 2) RowSetEventListener::rowsChanged there, makes sense to call, could be missing now 3) DbGridControl::SetCurrent but there the xUpdateCursor->moveToInsertRow() or m_pDataCursor->moveToBookmark already took care (through value changed events) to update the column's values no need to do it again 4) DbGridControl::AdjustDataSource ???? 5) DbGridControl::AdjustDataSource a second time right after SetCurrent, see above... <sigh> 6) DbGridControl::Undo 7) DbGridControl::resetCurrentRow where the comment explicitly says RowModified will update the controller... 8) DbGridControl::SaveRow ok, makes sense to reload Looking at DbGridControl in isolation, we could stick the previous content of InitController into RowModified, but need to look at the other implementers of InitController for a complete understanding.