diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2019-07-11 22:24:41 +1000 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-07-15 09:06:17 +0200 |
commit | a148813cec0c4da58686cac199a2de7d9b543b06 (patch) | |
tree | 849377e41d9a42c7eb91be24f647a1e15659b493 | |
parent | 898b02dc11980204d31a3bf10b15eea68d70dce7 (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.cxx | 11 |
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 ); } |