diff options
author | Gökay Şatır <gokaysatir@collabora.com> | 2024-04-23 14:40:14 +0300 |
---|---|---|
committer | Gökay ŞATIR <gokaysatir@collabora.com> | 2024-05-01 16:16:52 +0200 |
commit | 1ac07d2c9d45cc5db3f689d287ad9be939ef1124 (patch) | |
tree | a739ff8b428664ab533ef722579d367261eaf671 | |
parent | d7790878e315f795f5d9965dd9997ba3a5004c60 (diff) |
Use a for loop for setting view properties.
Since there may be no view with the given id, checking the list first is safer.
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
Change-Id: I4c305e0a0f6ce7cccdfea9889c414a6054ed3a88
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166531
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
(cherry picked from commit 4d8c4a60105488be84ea80775dc04a24582752fb)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166720
Tested-by: Jenkins
-rw-r--r-- | desktop/source/lib/init.cxx | 10 | ||||
-rw-r--r-- | include/sfx2/lokhelper.hxx | 4 | ||||
-rw-r--r-- | sfx2/source/view/lokhelper.cxx | 30 |
3 files changed, 38 insertions, 6 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 22a0abd3a6e3..a857dec6f3f5 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -7232,26 +7232,24 @@ static void doc_setViewTimezone(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*p } } -static void doc_setViewReadOnly(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* pThis, int nId, const bool readOnly) +static void doc_setViewReadOnly(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThis*/, int nId, const bool readOnly) { comphelper::ProfileZone aZone("doc_setViewReadOnly"); SolarMutexGuard aGuard; SetLastExceptionMsg(); - doc_setView(pThis, nId); - SfxViewShell::Current()->SetLokReadOnlyView(readOnly); + SfxLokHelper::setViewReadOnly(nId, readOnly); } -static void doc_setAllowChangeComments(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* pThis, int nId, const bool allow) +static void doc_setAllowChangeComments(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThis*/, int nId, const bool allow) { comphelper::ProfileZone aZone("doc_setAllowChangeComments"); SolarMutexGuard aGuard; SetLastExceptionMsg(); - doc_setView(pThis, nId); - SfxViewShell::Current()->SetAllowChangeComments(allow); + SfxLokHelper::setAllowChangeComments(nId, allow); } static void doc_setAccessibilityState(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* pThis, int nId, bool nEnabled) diff --git a/include/sfx2/lokhelper.hxx b/include/sfx2/lokhelper.hxx index c4e88035fd96..3820558d6500 100644 --- a/include/sfx2/lokhelper.hxx +++ b/include/sfx2/lokhelper.hxx @@ -119,6 +119,10 @@ public: static void setDefaultLanguage(const OUString& rBcp47LanguageTag); /// Enable/Disable AT support for the given view. static void setAccessibilityState(int nId, bool nEnabled); + // Set the readonly state of the view. + static void setViewReadOnly(int nId, bool readOnly); + // In readonly view, can user add / modify comments or not. + static void setAllowChangeComments(int nId, bool allow); /// Get the language used by the loading view (used for all save operations). static const LanguageTag & getLoadLanguage(); /// Set the language used by the loading view (used for all save operations). diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index ff9f1a8175bf..145484fce9e7 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -342,6 +342,36 @@ void SfxLokHelper::setViewLanguage(int nId, const OUString& rBcp47LanguageTag) } } +void SfxLokHelper::setViewReadOnly(int nId, bool readOnly) +{ + std::vector<SfxViewShell*>& rViewArr = SfxGetpApp()->GetViewShells_Impl(); + + for (SfxViewShell* pViewShell : rViewArr) + { + if (pViewShell && pViewShell->GetViewShellId() == ViewShellId(nId)) + { + LOK_INFO("lok.readonlyview", "SfxLokHelper::setViewReadOnly: view id: " << nId << ", readOnly: " << readOnly); + pViewShell->SetLokReadOnlyView(readOnly); + return; + } + } +} + +void SfxLokHelper::setAllowChangeComments(int nId, bool allow) +{ + std::vector<SfxViewShell*>& rViewArr = SfxGetpApp()->GetViewShells_Impl(); + + for (SfxViewShell* pViewShell : rViewArr) + { + if (pViewShell && pViewShell->GetViewShellId() == ViewShellId(nId)) + { + LOK_INFO("lok.readonlyview", "SfxLokHelper::setAllowChangeComments: view id: " << nId << ", allow: " << allow); + pViewShell->SetAllowChangeComments(allow); + return; + } + } +} + void SfxLokHelper::setAccessibilityState(int nId, bool nEnabled) { std::vector<SfxViewShell*>& rViewArr = SfxGetpApp()->GetViewShells_Impl(); |