Kaydet (Commit) 89cf1ab1 authored tarafından Lionel Elie Mamane's avatar Lionel Elie Mamane Kaydeden (comit) Andras Timar

Remove harmful ill-timed CellController disable on mouse button down

This disable will be done, in a better way, by the call to
BrowseBox::MouseButtonDown below, *after* the destination of the mouse
click has grabbed the focus, by a call to DeactivateCell().

If this is done here, while the "source" controller still has the
focus, then the window's Disable() method will try to pass the focus
the the "next control". However, the "next" control may belong to
another form, and this will do a (premature!) save to the database of
the modifications. This may lead to a database error, when the data is
not in a shape to be written to the database, e.g. when on an
insertion row and not all mandatory fields have been filled in.
This then pops up an error message to the user.

Change-Id: I38b1850319691b34232e51f131f8d099dc4a9114
Reviewed-on: https://gerrit.libreoffice.org/17270Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>
üst 97db86f4
......@@ -482,20 +482,10 @@ namespace svt
void EditBrowseBox::MouseButtonDown(const BrowserMouseEvent& rEvt)
{
sal_uInt16 nColPos = GetColumnPos( rEvt.GetColumnId() );
long nRow = rEvt.GetRow();
// absorb double clicks
if (rEvt.GetClicks() > 1 && rEvt.GetRow() >= 0)
return;
// change to a new position
if (IsEditing() && (nColPos != nEditCol || nRow != nEditRow) && (nColPos != BROWSER_INVALIDID) && (nRow < GetRowCount()))
{
CellControllerRef aCellController(Controller());
HideAndDisable(aCellController);
}
// we are about to leave the current cell. If there is a "this cell has been modified" notification
// pending (asynchronously), this may be deadly -> do it synchronously
if ( nCellModifiedEvent )
......
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