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& )

Reply via email to