[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - include/vcl sfx2/source vcl/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jul 2 08:15:57 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 f4d6a3a7142f2f11e8c58b9fb32d05f66fa69685
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 1 21:12:26 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jul 2 10:15:22 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/+/118253
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx
index e787ce40fca8..d96e6d7e87ac 100644
--- a/include/vcl/print.hxx
+++ b/include/vcl/print.hxx
@@ -387,7 +387,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
{
@@ -516,6 +516,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 0007daf4a2f8..1be88db77133 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 fbbde7b5d770..d4518bba4889 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