diff options
author | Armin Le Grand <Armin.Le.Grand@cib.de> | 2016-09-30 12:40:47 +0200 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@cib.de> | 2016-10-06 09:01:30 +0000 |
commit | b07163d73a28e7792011edddf246726919364a26 (patch) | |
tree | 9693cb4ba0151f4973730745b801509f9ff6fd18 | |
parent | c5d355e9c9cbc94eede8f438895e192d834f7096 (diff) |
tdf#102852 Fixed BreakDlg
Needed to ensure correct return value in dialog
and that it repaints
Change-Id: I029d10b6699629b2f2f8651f6d96ceceba7a3d8c
Reviewed-on: https://gerrit.libreoffice.org/29401
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>
-rw-r--r-- | include/vcl/dialog.hxx | 5 | ||||
-rw-r--r-- | sd/source/ui/dlg/brkdlg.cxx | 9 | ||||
-rw-r--r-- | vcl/source/window/dialog.cxx | 18 |
3 files changed, 23 insertions, 9 deletions
diff --git a/include/vcl/dialog.hxx b/include/vcl/dialog.hxx index da3aa7e37a46..0d763bda6f62 100644 --- a/include/vcl/dialog.hxx +++ b/include/vcl/dialog.hxx @@ -100,6 +100,11 @@ public: virtual void PrePaint(vcl::RenderContext& rRenderContext) override; virtual void PostPaint(vcl::RenderContext& rRenderContext) override; + // ensureRepaint - triggers Application::Yield until the dialog is + // completely repainted. Sometimes needed for dialogs showing progress + // during actions + void ensureRepaint(); + // Screenshot interface virtual std::vector<OString> getAllPageUIXMLDescriptions() const; virtual bool selectPageByUIXMLDescription(const OString& rUIXMLDescription); diff --git a/sd/source/ui/dlg/brkdlg.cxx b/sd/source/ui/dlg/brkdlg.cxx index be0c2d579812..516a3bcfbe9b 100644 --- a/sd/source/ui/dlg/brkdlg.cxx +++ b/sd/source/ui/dlg/brkdlg.cxx @@ -145,8 +145,13 @@ IMPL_LINK( BreakDlg, UpDate, void*, nInit, bool ) m_pFiInsInfo->SetText(info); } - Application::Reschedule(); - return bCancel; + // make sure dialog gets painted, it is intended to + // show the progress to the user. Also necessary to + // provide a clickable cancel button + ensureRepaint(); + + // return okay-value (-> !cancel) + return !bCancel; } /** diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx index 5884a7316c40..eef4c5ab5018 100644 --- a/vcl/source/window/dialog.cxx +++ b/vcl/source/window/dialog.cxx @@ -863,14 +863,8 @@ bool Dialog::selectPageByUIXMLDescription(const OString& /*rUIXMLDescription*/) return true; } -Bitmap Dialog::createScreenshot() +void Dialog::ensureRepaint() { - // same prerequisites as in Execute() - setDeferredProperties(); - ImplAdjustNWFSizes(); - Show(); - ToTop(); - // ensure repaint Invalidate(); mbPaintComplete = false; @@ -879,6 +873,16 @@ Bitmap Dialog::createScreenshot() { Application::Yield(); } +} + +Bitmap Dialog::createScreenshot() +{ + // same prerequisites as in Execute() + setDeferredProperties(); + ImplAdjustNWFSizes(); + Show(); + ToTop(); + ensureRepaint(); return GetBitmap(Point(), GetOutputSizePixel()); } |