office-gobmx/sfx2
Matt K 07250a8327 tdf#117967 Fixes Save confirmation dialog for user cancel
The "Confirm save" dialog is launched from SfxMedium::CheckFileDate
via "xHandler->handle( xInteractionRequestImpl );" and if the user
canceled it the error is saved in the SfxMedium via
"SetError(ERRCODE_ABORT);".  Then, control is returned to the
calling function SfxObjectShell::SaveTo_Impl which currently
doesn't handle the cancel error condition, so this change just adds
a check to detect it and return instead of doing more "save"
processing.  This return then goes to the calling function
SfxObjectShell::DoSave_Impl which also does some save processing
after cancel, in particular it updates the timestamps of the
current SfxMedium (which are checked in SfxMedium::CheckFileDate
from above and determines whether the "Confirm save" dialog will be
launched), so this change prevents the updates to the timestamps by
exiting early (i.e. before "DoSaveCompleted();" is called) if the
abort error condition is seen so as to avoid a timestamp comparison
result of equality which would prevent the "Confirm save" dialog
from showing on every subsequent save action from the user.  Now
the behavior is for the timestamp comparison to fail equality (as
would be expected if the file changed underneath the user) so as to
ensure the "Confirm save" dialog continues to show for every
subsequent save action by the user.

Change-Id: I9c4aefc163a06029c80a8a28cdf4a09dff0031a5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137540
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2022-07-30 06:27:05 +02:00
..
classification
doc
emojiconfig
inc clang-tidy modernize-pass-by-value in sfx2 2022-07-14 15:38:12 +02:00
qa add missing 'xComponent->dispose()' to a test 2022-06-10 11:20:24 +02:00
sdi tdf#131760 change category of Styles command 2022-04-27 09:37:41 +02:00
source tdf#117967 Fixes Save confirmation dialog for user cancel 2022-07-30 06:27:05 +02:00
uiconfig/ui tdf#150045 Set secondary/explanatory labels apart 2022-07-30 04:21:21 +02:00
util
AllLangMoTarget_sfx2.mk
CppunitTest_sfx2_classification.mk
CppunitTest_sfx2_controlleritem.mk
CppunitTest_sfx2_dialogs_test.mk
CppunitTest_sfx2_doc.mk
CppunitTest_sfx2_metadatable.mk
CppunitTest_sfx2_misc.mk
CppunitTest_sfx2_view.mk
CustomTarget_classification.mk
IwyuFilter_sfx2.yaml
JunitTest_sfx2_complex.mk
JunitTest_sfx2_unoapi.mk
Library_sfx.mk
Makefile
Module_sfx2.mk
Package_classification.mk
Package_emoji.mk
PythonTest_sfx2_python.mk
README.md
UIConfig_sfx.mk
UITest_sfx2_doc.mk

Legacy Framework

SFX is the "old" framework, used for historical reasons.

An attempt of documentation of this module is located in [git:sfx2/doc].

It contains base classes for document model, view and controller, used by "old" applications like sw, sc, sd (while "new" applications are based on the "new" UNO based framework in "framework").

The SFX framework is based on dispatching slots identified by integers (SlotIDs) to SfxShells, and there is a dedicated IDL compiler (svidl) involved that generates C++ slot headers from SDI files in modules' sdi/ subdirectory.

Documentation about SFX dispatch, SDI etc.: https://wiki.openoffice.org/wiki/Framework/Article/Implementation_of_the_Dispatch_API_In_SFX2

Document load/save code is maintained in [git:sfx2/source/doc/docfile.cxx] SfxMedium class, which handles all the twisty load and save corner cases.

[git:sfx2/source/appl/sfxhelp.cxx] Start procedure for the online help viewer top level window; handling of help URL creation and dispatch.

There are also some UNO services here that could really be implemented anywhere, e.g. the DocumentProperties or DocumentMetadataAccess.

Notable files: sfx2/source/dialog/backingwindow.cxx Startcenter buttons and the corresponding event handler.