summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@cib.de>2016-09-30 12:40:47 +0200
committerArmin Le Grand <Armin.Le.Grand@cib.de>2016-10-06 09:01:30 +0000
commitb07163d73a28e7792011edddf246726919364a26 (patch)
tree9693cb4ba0151f4973730745b801509f9ff6fd18
parentc5d355e9c9cbc94eede8f438895e192d834f7096 (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.hxx5
-rw-r--r--sd/source/ui/dlg/brkdlg.cxx9
-rw-r--r--vcl/source/window/dialog.cxx18
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());
}