sw/source/uibase/utlui/content.cxx | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-)
New commits: commit be2212824d4271e71c25706a790d0f4928bdf43a Author: Jim Raykowski <[email protected]> AuthorDate: Sat Dec 20 17:52:08 2025 -0900 Commit: Jim Raykowski <[email protected]> CommitDate: Sun Dec 21 06:57:26 2025 +0100 tdf#170067 SwNavigator: Unprotect section needs to ask for set password Makes unprotecting password protected sections from the Navigator Sections entries popup menu show the password dialog for password entry match before unprotect can be done. Change-Id: I1178a2254616a32ad33f6974071885e3021d1dcf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196040 Tested-by: Jenkins Reviewed-by: Jim Raykowski <[email protected]> diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index d04571408bcc..18733b74ed5b 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -132,6 +132,9 @@ #include <doctxm.hxx> +#include <sfx2/passwd.hxx> +#include <svl/PasswordHelper.hxx> + #define CTYPE_CNT 0 #define CTYPE_CTT 1 @@ -6040,11 +6043,38 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry SwSection* pSection = pSectionFormat->GetSection(); SwSectionData aSectionData(*pSection); if (rSelectedPopupEntry == "protectsection") - aSectionData.SetProtectFlag(!pSection->IsProtect()); + { + if (pSection->GetPassword().hasElements()) + { + SfxPasswordDialog aPasswordDlg(m_pDialog->GetFrameWeld()); + if (aPasswordDlg.run()) + { + if (SvPasswordHelper::CompareHashPassword(aSectionData.GetPassword(), + aPasswordDlg.GetPassword())) + { + aSectionData.SetProtectFlag(!aSectionData.IsProtectFlag()); + if (!aSectionData.IsProtectFlag()) + aSectionData.SetPassword(uno::Sequence<sal_Int8 >()); + } + else + { + std::unique_ptr<weld::MessageDialog> xInfoBox( + Application::CreateMessageDialog( + m_pDialog->GetFrameWeld(), VclMessageType::Info, VclButtonsType::Ok, + SwResId(STR_WRONG_PASSWORD))); + xInfoBox->run(); + } + } + } + else + aSectionData.SetProtectFlag(!aSectionData.IsProtectFlag()); + } else aSectionData.SetHidden(!pSection->IsHidden()); m_pActiveShell->UpdateSection(m_pActiveShell->GetSectionFormatPos(*pSectionFormat), aSectionData); + Display(true); + return; } else if (rSelectedPopupEntry == "sort") {
