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 d1f203ec75c2fb8a15e75f540f89309a49a6d395 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Jul 1 21:12:26 2021 +0100 Commit: Adolfo Jayme Barrientos <fit...@ubuntu.com> CommitDate: Sat Jul 3 08:05:21 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 <er...@redhat.com> (cherry picked from commit bc51aec4209729ea91a79a82506d18461183f570) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118267 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> Tested-by: Adolfo Jayme Barrientos <fit...@ubuntu.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; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits