https://bugs.documentfoundation.org/show_bug.cgi?id=162692

Armin Le Grand <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|[email protected] |[email protected]
                   |desktop.org                 |

--- Comment #24 from Armin Le Grand <[email protected]> ---
Checked deeper. The cases DLG_RET_ADD and DLG_RET_EDIT in
SID_OPENDLG_CONDFRMT_MANAGER/SID_OPENDLG_CURRENTCONDFRMT_MANAGER in
ScCellShell::ExecuteEdit *are* needed. I removed creating new
ScCondFormatDlgData since it always seemed to overwrite the already set one,
resp. set a 2nd one using DirectPutItemInPool -> the next access to it using
GetItemSurrogates(*, SCITEM_CONDFORMATDLGDATA) would always have accessed the
old, never the newly added one.
Debugging old version shows that there might be !pDlgItem and thus no already
existing ScCondFormatDlgData, then setting in these cases is needed.

We now have one place for one ScCondFormatDlgData in the View (see
get/setScCondFormatDlgItem()). Thus in ScCellShell::ExecuteEdit at
SID_OPENDLG_CONDFRMT_MANAGER/SID_OPENDLG_CURRENTCONDFRMT_MANAGER I remove now
early, not after dlg running (anyways unclear with dlg being async). That needs
the const std::shared_ptr<ScCondFormatDlgData>& rDlgItem to move to a
non-reference aDlgItem to hold and ensure it's existence.

Also reconstructing needed actions for DLG_RET_ADD and DLG_RET_EDIT. Securing
more places to not early-delete ScCondFormatDlgData from the View.

With that done I no longer get the same DLG after change (which is this error).
Due to not knowing too much about this stuff I suppose to put in gerrit and ask
involved people to check functionality -> I need someone who can tell if still
something is broken...

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to