On Thursday 20 June 2002 5:49 pm, John Levon wrote:
> On Thu, Jun 20, 2002 at 05:26:16PM +0100, Angus Leeming wrote:
> > So that means that the code in XScreen that calls
> >     XCopyArea (display, cursor_pixmap, owner_.getWin(), ...
> > direct is incorrect (which is your comment about the cursor being
> > broken)?
> >
> > Instead it should call
> >     XCopyArea (display, cursor_pixmap, owner_.getPixmap(), ...
> >     expose(...)
> >
> > Am I on the right track?
>
> Yep - of course you need to make sure that area is then exposed. But
> given the current xforms stuff (modulo your patch) that would cause the
> entire workarea to be redrawn (whooo).

because of the loop in objects.c's mark_for_redraw / fl_redraw_form:
        for (ob = form->first; ob; ob = ob->next)
                ob->redraw = 1;
that is called by fl_handle_forms and flags all objects on the form for 
redraw? 

(As opposed to the code in xscreen's XScreen::draw that just redraws a little 
bit of the pixmap.)

Doesn't the XEvent give us a bounding box. Things within the box should be 
drawn, things outside it need not be. Couldn't that info be used to flag 
which objects should be redrawn. Or am I dreaming here.

> I suspect I am going to have to abandon this and just go back to doing
> the wrong thing in xforms. Most of the rest of the patch can stay as is,
> of course.
>
> And this time I'll add a *comment* saying WHY it's done like that (Grrr)

For the reasons I've outlined?

> regards
> john

Angus (who's not contributing anything but might be learning a little)

Reply via email to