summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2019-07-11 22:24:41 +1000
committerMiklos Vajna <vmiklos@collabora.com>2019-07-15 09:06:17 +0200
commita148813cec0c4da58686cac199a2de7d9b543b06 (patch)
tree849377e41d9a42c7eb91be24f647a1e15659b493
parent898b02dc11980204d31a3bf10b15eea68d70dce7 (diff)
Restore original value of SID_DOC_READONLY item on cancel or SID_EDITDOC
Otherwise, SfxObjectShell::DoSaveCompleted later calls SfxMedium::LockOrigFileOnDemand, which sets error state for the medium reopened in read-only mode, as if it were opened in read-write mode. Change-Id: Ib2df62470878ea609552ccc76df84a3fdde30646 Reviewed-on: https://gerrit.libreoffice.org/75413 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit df9adfc95429bdaf085e9927ec5b326cee6b7a2a) Reviewed-on: https://gerrit.libreoffice.org/75493 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--sfx2/source/view/viewfrm.cxx11
1 files changed, 11 insertions, 0 deletions
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 0d9b905e2382..d814ed43e5a0 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -469,6 +469,13 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
bool bOK = false;
bool bRetryIgnoringLock = false;
bool bOpenTemplate = false;
+ boost::optional<bool> aOrigROVal;
+ if (!pVersionItem)
+ {
+ auto pRO = pMed->GetItemSet()->GetItem<SfxBoolItem>(SID_DOC_READONLY, false);
+ if (pRO)
+ aOrigROVal = pRO->GetValue();
+ }
do {
LockFileEntry aLockData;
if ( !pVersionItem )
@@ -533,6 +540,10 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
{
pMed->ResetError();
pMed->SetOpenMode( SFX_STREAM_READONLY );
+ if (aOrigROVal)
+ pMed->GetItemSet()->Put(SfxBoolItem(SID_DOC_READONLY, *aOrigROVal));
+ else
+ pMed->GetItemSet()->ClearItem(SID_DOC_READONLY);
pMed->ReOpen();
pSh->DoSaveCompleted( pMed );
}