#
680a35bb |
| 07-Jun-2008 |
Michael Lotz <mmlr@mlotz.ch> |
Add a simple test that demonstrates that the Haiku app_server incorrectly (or at least incompatibly) uses the user set clipping region when determining whether or not to call Draw() on a view. Under
Add a simple test that demonstrates that the Haiku app_server incorrectly (or at least incompatibly) uses the user set clipping region when determining whether or not to call Draw() on a view. Under BeOS when a some part of a view is exposed it will always trigger a Draw(), even if the current clipping region disallows drawing in the supplied update rect. Under Haiku however the view is not considered for an update when the current clipping region does not intersect with the newly exposed area. Running this test app from the Terminal this behaviour can be seen. When clicking inside the window a floating window pops up. When clicking again it goes away and triggers a redraw. When hitting a key, a clipping region is set that does not overlap with the floating window. After this clipping is set, the view does not get any Draw() call anymore when the floating window goes away. This is the reason for the redraw issues in firefox, as firefox uses the clipping region to constrain its asynchronous drawing, but does never reset the clipping to NULL. As firefox just collects the update rects in Draw() and then draws the contents itself, once the clipping region is set, many of the Draw() calls don't get called and the interface parts are never redrawn.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25853 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|