Lars Gullik Bjønnes wrote:
Abdelrazak Younes <[EMAIL PROTECTED]> writes:

| Lars Gullik Bjønnes wrote:
| > When running my "scroll-down" test with current trunk, the screen
| > jumps down, not painting a lot of screenfuls. This is becuase of the
| > call to update, which collects updates to the workarea and elect to
| > paint it all a bit later.
| | In the current trunk the Event pruning is turned off. Please turned it
| on and retry. Maybe that will solve your problem.

It will, but for the wrong reasons. The event pruning solves a
different problem, that by co-incidence also solves the paint problem.

OK.

| > If the update is changed to a repaint everything is find (not
| > really,... still got that run away PageDown)
| > The first chunk does not help, but the second does.
| | > - viewport()->update(x, y, w, h);
| > +       viewport()->repaint(x, y, w, h);
| | But this change is bad as it provokes an immediate screen repaint in
| all cases, for normal editing included.

Then we should have two differnt methods one that call update and one
that call repaint.

On scroll-down we should not allow combining paint events.

The weird thing is that on Windows the all screen repaint are acknowledged and done in sequence.


Perhaps a genereal rule is: if the whole workarea is to be painted,
use repaint, if not, use update. That should be possible to put into
sourcecode.

Maybe... Let me think a bit about that. I could make a special case in "WorkArea::redraw()".


(and I am not so sure that immidiate screen repaint is bad, as long as
we don't repaint the whole screen always.)

As long as we don't call update() often yes. As we use a pixmap cache and the "WorkArea::redraw()" is called only in "BufferView::Pimpl::update()":

                if (forceupdate) {
                        // Second drawing step
                        workArea_->redraw(*bv_, vi);

Maybe you have a point. But I am not sure how many calls to
BufferView::Pimpl::update() is done in the kernel. But even if the number of calls are is minimal I don't want to trick the Qt API. Because then we will loose the opportunity to use update() anywhere we want.

Abdel.



Reply via email to