07250a8327
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 |
||
---|---|---|
.. | ||
classification | ||
doc | ||
emojiconfig | ||
inc | ||
qa | ||
sdi | ||
source | ||
uiconfig/ui | ||
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.