tdf#123505 svx: fix invalidation loop caused by special form control geometry
Regression from commit d464d505 (Refactor calc non-linear ViewToDevice transform, 2018-10-12), the problem was that the opengl menu was never painted from the starved idle handler as a paint-invalidation loop starved the main loop. ScGridWindow::Paint() called vcl::Window::ImplPosSizeWindow() for the form control of the bugdoc, which triggered an invalidation -> paint -> start again. Checking what adjustControlGeometry_throw() did, the result of the transformed points are quite close to each other, but not equivalent: debug:18521:18521: adjustControlGeometry_throw: aTopLeft before transformation is (1773,426) debug:18521:18521: adjustControlGeometry_throw: aTopLeft after transformation is (64.935,16.0382) debug:18521:18521: adjustControlGeometry_throw: aPaintRectPixel is 952x586@(64,16) If we round, rather than truncate, then the size of the control is always the same, so no actual resize and invalidation happens during paint. Change-Id: Id55fd227e3ae7fc57d5253bc28f42b9b4315450e Reviewed-on: https://gerrit.libreoffice.org/69821Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
Showing
Please
register
or
sign in
to comment