comphelper/source/misc/storagehelper.cxx | 9 ++++++++- include/comphelper/storagehelper.hxx | 3 ++- sfx2/source/dialog/filedlghelper.cxx | 4 +++- 3 files changed, 13 insertions(+), 3 deletions(-)
New commits: commit 2648907f51e230627f3a5b767b19985231a68412 Author: Sarper Akdemir <sarper.akde...@allotropia.de> AuthorDate: Wed Jul 17 15:17:32 2024 +0200 Commit: Sarper Akdemir <sarper.akde...@allotropia.de> CommitDate: Fri Jul 19 17:11:26 2024 +0200 make pop-up on Encrypt With GPG Key modal Not setting any parent window for XDocumentDigitalSignatures causes the key selection window to be non-modal, letting the user keep editing the document without completing the encryption interaction. Change-Id: Ic7e66cb43606355beaffc720b7c23cdf4f81d934 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170630 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akde...@allotropia.de> diff --git a/comphelper/source/misc/storagehelper.cxx b/comphelper/source/misc/storagehelper.cxx index b0b7897fd2ab..df74a6330a58 100644 --- a/comphelper/source/misc/storagehelper.cxx +++ b/comphelper/source/misc/storagehelper.cxx @@ -431,7 +431,12 @@ uno::Sequence< beans::NamedValue > OStorageHelper::CreatePackageEncryptionData( return aEncryptionData; } -uno::Sequence< beans::NamedValue > OStorageHelper::CreateGpgPackageEncryptionData() +uno::Sequence<beans::NamedValue> +OStorageHelper::CreateGpgPackageEncryptionData(const css::uno::Reference<css::awt::XWindow>& +#if HAVE_FEATURE_GPGME + xParentWindow +#endif +) { #if HAVE_FEATURE_GPGME // generate session key @@ -451,6 +456,8 @@ uno::Sequence< beans::NamedValue > OStorageHelper::CreateGpgPackageEncryptionDat security::DocumentDigitalSignatures::createDefault( comphelper::getProcessComponentContext())); + xSigner->setParentWindow(xParentWindow); + // fire up certificate chooser dialog - user can multi-select! const uno::Sequence< uno::Reference< security::XCertificate > > xSignCertificates= xSigner->chooseEncryptionCertificate(); diff --git a/include/comphelper/storagehelper.hxx b/include/comphelper/storagehelper.hxx index 2b36bbde5aac..3f9356c664da 100644 --- a/include/comphelper/storagehelper.hxx +++ b/include/comphelper/storagehelper.hxx @@ -45,6 +45,7 @@ namespace com::sun::star { } namespace lang { class XSingleServiceFactory; } namespace uno { class XComponentContext; } + namespace awt { class XWindow; } } namespace comphelper { @@ -175,7 +176,7 @@ public: std::u16string_view aPassword ); static css::uno::Sequence< css::beans::NamedValue > - CreateGpgPackageEncryptionData(); + CreateGpgPackageEncryptionData(const css::uno::Reference<css::awt::XWindow>& xParentWindow); static bool IsValidZipEntryFileName( std::u16string_view aName, bool bSlashAllowed ); diff --git a/sfx2/source/dialog/filedlghelper.cxx b/sfx2/source/dialog/filedlghelper.cxx index a9a7fb0c65c2..b54d65f7db2b 100644 --- a/sfx2/source/dialog/filedlghelper.cxx +++ b/sfx2/source/dialog/filedlghelper.cxx @@ -1584,7 +1584,9 @@ ErrCode FileDialogHelper_Impl::execute( std::vector<OUString>& rpURLList, try { // ask for keys - aEncryptionData = ::comphelper::OStorageHelper::CreateGpgPackageEncryptionData(); + aEncryptionData + = ::comphelper::OStorageHelper::CreateGpgPackageEncryptionData( + GetFrameInterface()); break; // user cancelled or we've some keys now } catch( const IllegalArgumentException& )