• Miklos Vajna's avatar
    tdf#123505 svx: fix invalidation loop caused by special form control geometry · 5b51aa12
    Miklos Vajna yazdı
    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: 's avatarMiklos Vajna <vmiklos@collabora.com>
    Tested-by: Jenkins
    5b51aa12
Adı
Son kayıt (commit)
Son güncelleme
..
RangeCopyPaste.ods Loading commit data...
cursor-away.ods Loading commit data...
empty.ods Loading commit data...
invalidation-loop.fods Loading commit data...
select-row-cols.ods Loading commit data...
shape.ods Loading commit data...
small.ods Loading commit data...
smile.png Loading commit data...
sort-range.ods Loading commit data...