Rebased ref, commits from common ancestor: commit 15fd0e43fac98e018b9eb1df44344dd3457a7fb8 Author: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> Date: Mon Apr 16 13:02:42 2018 +0200
Set parent window for print dialog In embedded LO this dialog sometimes shows up in background. Change-Id: I9b7f423aaa6b2bbe915398287a5f3b955af930b4 diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx index edb5ff7ff7c3..cfd661b057e2 100644 --- a/vcl/source/gdi/print3.cxx +++ b/vcl/source/gdi/print3.cxx @@ -471,7 +471,8 @@ bool Printer::PreparePrintJob(std::shared_ptr<PrinterController> xController, { try { - ScopedVclPtrInstance< PrintDialog > aDlg( nullptr, xController ); + VclPtr<vcl::Window> xParent = xController->getWindow(); + ScopedVclPtrInstance< PrintDialog > aDlg( xParent, xController ); if( ! aDlg->Execute() ) { xController->abortJob(); commit 22441165ecfeeae2953246eb9e0ad2a18fea21d1 Author: Caolán McNamara <caol...@redhat.com> Date: Mon Feb 19 16:33:35 2018 +0000 make it possible to set parent window for printer error messages Reviewed-on: https://gerrit.libreoffice.org/50008 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> (cherry picked from commit 60ae5f530c3123341a8c2d49793693c2cd4521c2) Change-Id: I0effa3645454ef9d03393ae8b256cd624ca04f03 diff --git a/include/vcl/oldprintadaptor.hxx b/include/vcl/oldprintadaptor.hxx index bd65f4d2ce27..23cbcf8112be 100644 --- a/include/vcl/oldprintadaptor.hxx +++ b/include/vcl/oldprintadaptor.hxx @@ -29,7 +29,7 @@ namespace vcl { ImplOldStyleAdaptorData* mpData; public: - OldStylePrintAdaptor( const VclPtr< Printer >& ); + OldStylePrintAdaptor(const VclPtr<Printer>&, const VclPtr<vcl::Window>&); virtual ~OldStylePrintAdaptor() override; void StartPage(); diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx index f452564c107d..83e086fd1d0a 100644 --- a/include/vcl/print.hxx +++ b/include/vcl/print.hxx @@ -394,7 +394,7 @@ class VCL_DLLPUBLIC PrinterController { ImplPrinterControllerData* mpImplData; protected: - PrinterController( const VclPtr<Printer>& ); + PrinterController( const VclPtr<Printer>&, const VclPtr<vcl::Window>& ); public: struct MultiPageSetup { @@ -436,6 +436,7 @@ public: virtual ~PrinterController(); const VclPtr<Printer>& getPrinter() const; + const VclPtr<vcl::Window>& getWindow() const; /** For implementations: get current job properties as changed by e.g. print dialog diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx index ca5baf74771f..22ebdfc7bb6a 100644 --- a/sfx2/source/view/viewprn.cxx +++ b/sfx2/source/view/viewprn.cxx @@ -104,7 +104,7 @@ SfxPrinterController::SfxPrinterController( const VclPtr<Printer>& i_rPrinter, SfxViewShell* pView, const uno::Sequence< beans::PropertyValue >& rProps ) - : PrinterController( i_rPrinter) + : PrinterController(i_rPrinter, pView ? pView->GetWindow() : nullptr) , maCompleteSelection( i_rComplete ) , maSelection( i_rSelection ) , mxRenderable( i_xRender ) diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx index 1d5a34b6c343..eaa28183b9ef 100644 --- a/sw/inc/viewsh.hxx +++ b/sw/inc/viewsh.hxx @@ -82,7 +82,6 @@ class SwAccessibleMap; namespace vcl { typedef OutputDevice RenderContext; - class OldStylePrintAdaptor; } // Define for flags needed in ctor or layers below. diff --git a/toolkit/source/awt/vclxprinter.cxx b/toolkit/source/awt/vclxprinter.cxx index 9adc64e1196e..a3f19096d6ea 100644 --- a/toolkit/source/awt/vclxprinter.cxx +++ b/toolkit/source/awt/vclxprinter.cxx @@ -28,6 +28,7 @@ #include <vcl/print.hxx> #include <vcl/jobset.hxx> #include <vcl/svapp.hxx> +#include <vcl/window.hxx> #include <tools/debug.hxx> #include <tools/stream.hxx> @@ -284,7 +285,7 @@ sal_Bool VCLXPrinter::start( const OUString& /*rJobName*/, sal_Int16 /*nCopies*/ if (mxPrinter.get()) { maInitJobSetup = mxPrinter->GetJobSetup(); - mxListener.reset(new vcl::OldStylePrintAdaptor(mxPrinter)); + mxListener.reset(new vcl::OldStylePrintAdaptor(mxPrinter, nullptr)); } return bDone; diff --git a/vcl/source/gdi/oldprintadaptor.cxx b/vcl/source/gdi/oldprintadaptor.cxx index 1f354febbd25..03bdd1c800fe 100644 --- a/vcl/source/gdi/oldprintadaptor.cxx +++ b/vcl/source/gdi/oldprintadaptor.cxx @@ -44,8 +44,8 @@ namespace vcl }; } -OldStylePrintAdaptor::OldStylePrintAdaptor( const VclPtr< Printer >& i_xPrinter ) - : PrinterController( i_xPrinter ) +OldStylePrintAdaptor::OldStylePrintAdaptor( const VclPtr< Printer >& i_xPrinter, const VclPtr<vcl::Window>& i_xWindow ) + : PrinterController( i_xPrinter, i_xWindow ) , mpData( new ImplOldStyleAdaptorData() ) { } diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx index b9de9928cc76..edb5ff7ff7c3 100644 --- a/vcl/source/gdi/print3.cxx +++ b/vcl/source/gdi/print3.cxx @@ -139,6 +139,7 @@ public: typedef std::unordered_map< OUString, css::uno::Sequence< sal_Bool >, OUStringHash > ChoiceDisableMap; VclPtr< Printer > mxPrinter; + VclPtr<vcl::Window> mxWindow; css::uno::Sequence< css::beans::PropertyValue > maUIOptions; std::vector< css::beans::PropertyValue > maUIProperties; std::vector< bool > maUIPropertyEnabled; @@ -206,10 +207,11 @@ public: void resetPaperToLastConfigured(); }; -PrinterController::PrinterController( const VclPtr<Printer>& i_xPrinter ) +PrinterController::PrinterController(const VclPtr<Printer>& i_xPrinter, const VclPtr<vcl::Window>& i_xWindow) : mpImplData( new ImplPrinterControllerData ) { mpImplData->mxPrinter = i_xPrinter; + mpImplData->mxWindow = i_xWindow; } static OUString queryFile( Printer* pPrinter ) @@ -303,7 +305,7 @@ bool Printer::PreparePrintJob(std::shared_ptr<PrinterController> xController, if (xController->isShowDialogs()) { ScopedVclPtrInstance<MessageDialog> aBox( - nullptr, "ErrorNoPrinterDialog", + xController->getWindow(), "ErrorNoPrinterDialog", "vcl/ui/errornoprinterdialog.ui"); aBox->Execute(); } @@ -453,7 +455,7 @@ bool Printer::PreparePrintJob(std::shared_ptr<PrinterController> xController, if( xController->getFilteredPageCount() == 0 ) { ScopedVclPtrInstance<MessageDialog> aBox( - nullptr, "ErrorNoContentDialog", + xController->getWindow(), "ErrorNoContentDialog", "vcl/ui/errornocontentdialog.ui"); aBox->Execute(); return false; @@ -775,6 +777,11 @@ const VclPtr<Printer>& PrinterController::getPrinter() const return mpImplData->mxPrinter; } +const VclPtr<vcl::Window>& PrinterController::getWindow() const +{ + return mpImplData->mxWindow; +} + void PrinterController::setPrinter( const VclPtr<Printer>& i_rPrinter ) { mpImplData->mxPrinter = i_rPrinter; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits