summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-11-05 14:01:42 +0530
committerpranavk <pranavk@collabora.co.uk>2017-11-09 04:12:50 +0100
commit446a37ece35dbe4c442f0679dd1cb4df79ed87a7 (patch)
tree092daeb0e04964719b9862debd1d3b5aae67fde2 /vcl/source
parentee57d2f8a57ac851c1250f2962ecd1fa987ee3d9 (diff)
lokdialog: Support painting parts of the dialog
Pass the dimensions of the region to the paintDialog call to paint only that much of the region in the dialog. The DIALOG_INVALIDATE callback also returns a 'rectangle' field now in the payload that tells the region of the dialog invalidated. It can be used in combination with the new paintDialog call then to paint only the invalidated region in the dialog. Change-Id: Iebb228865c71684e0f75dd01271b71ae41a0f906 Reviewed-on: https://gerrit.libreoffice.org/44472 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: pranavk <pranavk@collabora.co.uk>
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/control/ctrl.cxx4
-rw-r--r--vcl/source/window/dialog.cxx6
2 files changed, 6 insertions, 4 deletions
diff --git a/vcl/source/control/ctrl.cxx b/vcl/source/control/ctrl.cxx
index 736722387122..b62c90563d46 100644
--- a/vcl/source/control/ctrl.cxx
+++ b/vcl/source/control/ctrl.cxx
@@ -436,8 +436,10 @@ void Control::LogicInvalidate(const tools::Rectangle* /*pRectangle*/)
// otherwise, for now, just invalidate the whole dialog
Dialog* pParentDlg = GetParentDialog();
+
+ const tools::Rectangle aRect(Point(GetOutOffXPixel(), GetOutOffYPixel()), Size(GetOutputWidthPixel(), GetOutputHeightPixel()));
if (pParentDlg)
- pParentDlg->LogicInvalidate(nullptr);
+ pParentDlg->LogicInvalidate(&aRect);
}
}
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 9be733fbb4d0..0adb46c59d07 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -596,7 +596,7 @@ void Dialog::dispose()
if (comphelper::LibreOfficeKit::isActive() && mpDialogRenderable)
{
- mpDialogRenderable->notifyDialog(maID, "close");
+ mpDialogRenderable->notifyDialog(maID, "close", nullptr);
}
SystemWindow::dispose();
@@ -969,11 +969,11 @@ void Dialog::CloseFloatingWindow()
}
}
-void Dialog::LogicInvalidate(const tools::Rectangle* /*pRectangle*/)
+void Dialog::LogicInvalidate(const tools::Rectangle* pRectangle)
{
if (!comphelper::LibreOfficeKit::isDialogPainting() && mpDialogRenderable && !maID.isEmpty())
{
- mpDialogRenderable->notifyDialog(maID, "invalidate");
+ mpDialogRenderable->notifyDialog(maID, "invalidate", pRectangle);
}
}