[Libreoffice-commits] core.git: Branch 'libreoffice-7-1' - include/vcl sfx2/source vcl/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Jul 2 10:14:30 UTC 2021


 include/vcl/print.hxx        |    4 +++-
 sfx2/source/view/viewprn.cxx |    1 +
 vcl/source/gdi/print3.cxx    |   11 +++++++++++
 3 files changed, 15 insertions(+), 1 deletion(-)

New commits:
commit bc51aec4209729ea91a79a82506d18461183f570
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 1 21:12:26 2021 +0100
Commit:     Eike Rathke <erack at redhat.com>
CommitDate: Fri Jul 2 12:13:54 2021 +0200

    tdf#143149 fix crash if app exits while print progress is running
    
    dismiss the dialog if its parent goes away, but leave the print
    job running
    
    Change-Id: Ic29ee0300a7d9476ad27a2594a555312e30c74f2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118254
    Tested-by: Jenkins
    Reviewed-by: Eike Rathke <erack at redhat.com>

diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx
index 631b2f5b83fe..3d50fd089a60 100644
--- a/include/vcl/print.hxx
+++ b/include/vcl/print.hxx
@@ -380,7 +380,7 @@ class VCL_DLLPUBLIC PrinterController
     std::unique_ptr<ImplPrinterControllerData>
                                         mpImplData;
 protected:
-    PrinterController(const VclPtr<Printer>&, weld::Window*);
+    PrinterController(const VclPtr<Printer>&, weld::Window* pDialogParent);
 public:
     struct MultiPageSetup
     {
@@ -509,6 +509,8 @@ public:
     bool                                isShowDialogs() const;
     bool                                isDirectPrint() const;
 
+    void                                dialogsParentClosing();
+
     // implementation details, not usable outside vcl
     // don't use outside vcl. Some of these are exported for
     // the benefit of vcl's plugins.
diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx
index 796a505ed8d4..7ec660c7aff6 100644
--- a/sfx2/source/view/viewprn.cxx
+++ b/sfx2/source/view/viewprn.cxx
@@ -174,6 +174,7 @@ void SfxPrinterController::Notify( SfxBroadcaster& , const SfxHint& rHint )
     {
         EndListening(*mpViewShell);
         EndListening(*mpObjectShell);
+        dialogsParentClosing();
         mpViewShell = nullptr;
         mpObjectShell = nullptr;
     }
diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx
index 1cc0ce8c1c93..8b00e2d9f85b 100644
--- a/vcl/source/gdi/print3.cxx
+++ b/vcl/source/gdi/print3.cxx
@@ -779,6 +779,17 @@ weld::Window* PrinterController::getWindow() const
     return mpImplData->mpWindow;
 }
 
+void PrinterController::dialogsParentClosing()
+{
+    mpImplData->mpWindow = nullptr;
+    if (mpImplData->mxProgress)
+    {
+        // close the dialog without doing anything, just get rid of it
+        mpImplData->mxProgress->response(RET_OK);
+        mpImplData->mxProgress.reset();
+    }
+}
+
 void PrinterController::setPrinter( const VclPtr<Printer>& i_rPrinter )
 {
     VclPtr<Printer> xPrinter = mpImplData->mxPrinter;


More information about the Libreoffice-commits mailing list