diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2024-06-05 18:53:05 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2024-06-11 10:11:12 +0200 |
commit | 0f9b5cd1c5e1e2a2ac389a3e9cd6b4f84bcb108e (patch) | |
tree | 6fea78b108a92fc39bc88b9723dd57674a57b4aa | |
parent | 2034ed9acc639694b9ea01805e9e5d4752287371 (diff) |
tdf#157931 sfx2: fix modified status of Base formscib-6.4-26
The problem is that when a Base form is not in design mode, it's not
expected that it will be stored.
There are checks for m_bOpenInDesign in ODocumentDefinition::save() and
ODocumentDefinition::saveAs() that were added in commit
9cfe62966ff1e0039d95a07d0c613675a53e3075 "CWS dba201b" but removing
these runs into another check in OCommonEmbeddedObject::storeOwn()
of m_bReadOnly and then it still fails, presumably because the storage
was opened readonly.
Let's restore SfxObjectShell::IsEnableSetModified() to check
IsReadOnly(), but only for Base form documents, which seems simplest.
(regression from commit bde746141f9b382156a5ce79ebf82c5e32fc455b)
Change-Id: I886389e2bd462d27ed5c46bfd2132893bb2d5a81
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168481
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Tested-by: Jenkins
(cherry picked from commit 3e7478ef9706e74ac551c1f94090e163e74c7fd8)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168442
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
(cherry picked from commit d6b881627cc1f6982129862e0221da65389d83bf)
-rw-r--r-- | sfx2/source/doc/objmisc.cxx | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx index 9ff78bff6eea..635fabd3b292 100644 --- a/sfx2/source/doc/objmisc.cxx +++ b/sfx2/source/doc/objmisc.cxx @@ -267,7 +267,13 @@ bool SfxObjectShell::IsEnableSetModified() const // which the user didn't load or activate to modified. return pImpl->m_bEnableSetModified && !IsPreview() && eCreateMode != SfxObjectCreateMode::ORGANIZER - && eCreateMode != SfxObjectCreateMode::INTERNAL; + && eCreateMode != SfxObjectCreateMode::INTERNAL + // tdf#157931 form documents only in design mode + && ((pImpl->pBaseModel + && !pImpl->pBaseModel->impl_isDisposed() + && pImpl->pBaseModel->IsInitialized() + && pImpl->pBaseModel->getIdentifier() != "com.sun.star.sdb.FormDesign") + || !IsReadOnly()); } |