Revision 784703
Go back to digest for 16th March 2008Optimization in KDE Base
Large optimization of scrolling for pages containing "position: fixed" objects.
.replace the dumb approach of repainting the whole page always, by collecting fixed regions, repainting them individually, then blit-scrolling the remaining surface.
.also maintain a tighter count of fixed objects, so that changes of styles might trigger a switch from static to blitting (i.e. fast) background.
.consequently, go all the way to using QWidget::scroll() instead of native QWidget::move() for scrolling, so as to avoid the unescapable flicker when switching from a method to the other.
QWidget::scroll is - I believe, a tad slower, but not significantly so, and the gain in overall browsing smoothness is very satisfactory.
-change of scrolling method conveniently allows to avoid the serious scrolling bugs in 4.4 beta, making it possible to remove the disabling of alien widgets, which in turn should fix the problems Roman encountered in Kopete.
File Changes
- /trunk/KDE/kdelibs/khtml
- /khtmlview.cpp
- /khtmlview.h
- /css/cssstyleselector.cpp
- /rendering/render_block.h
- /rendering/render_canvas.cpp
- /rendering/render_canvas.h
- /rendering/render_layer.cpp
- /rendering/render_object.cpp