On Fri, Jun 21, 2002 at 12:13:28PM +0100, Angus Leeming wrote:

> > That's what the patch I sent does (should do)
> 
> Maybe ;-) But I'm confused by XScreen::draw:
> 
>                       XCopyArea (fl_get_display(),
>                                  owner_.getWin(), // owner_.getPixmap(),
>                                  owner_.getWin(), // owner_.getPixmap(),
>                                  ...);
>       
>                       // expose the area drawn
>                       expose(0, 0,
>                              owner_.workWidth(),
>                              old_first - text->first_y);
> 
> Why are you changing owner_.getWin() direct, not owner_.getPixmap() and then 
> expose()ing the change?

Consider a screen like this :

  -----
  |111|
  |222|
  -----

and we scroll down :

  -----
  |222|
  |XXX|
  -----

We must repaint XXX line but we can copy 222 line from the window. But
yes, we should copying within the pixmap, then exposing the entire area
(so I should have also changed this bit within the patch). Without the
patch (current CVS / old style), we make an expose on the XXX line and
copy directly the 222 on the window.


> So, ideally, XWorkArea::paint should change only a small area of the window 
> and this info will come from xev. Looking more deeply, I see that this is 
> what it's coded up to do, as is XScreen::expose.

That's right.

> That meansthat all we have to do is pass the correct coordinate info to 
> expose(). But we seem to do that too.

Yes.

> So, it looks to me that your patch + my xforms patch will allow us to redraw 
> only a part of the window, with the XScreen::draw proviso above.

But we get an FL_DRAW: what parts of the pixmap should we copy into the
real lyx window ? We don't know from this point, so we have to copy the
whole thing :/

> Let's ignore that for now. This is something that should be hidden inside 
> WorkArea. First we should finish the interaction between the Screen and the 
> WorkArea.

I think it is finished outside of xforms/ (in fact I know it is since Qt
is working a treat ...)

that xforms screen is copying directly onto the workarea window (which
is most definitely not the event-driven way) is an xforms-specific bug -
the GUII API does not come into IMHO

regards
john

-- 
"If a thing is not diminished by being shared, it is not rightly owned if
 it is only owned & not shared."
        - St. Augustine

Reply via email to