From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Fri Jan 24 2003 - 05:06:56 EST
> Patrick Lam <plam@plam.lcs.mit.edu> wrote:
> The problem was that I couldn't coordinate redraws with xors. That
> is, when the window system went behind my back to redraw something
> (for instance, if you obscure part of the caret) I couldn't redraw
> just part of the caret; I don't think GTK, at least tells you enough
> to do this. You would have to enlarge the draw region to encompass the
> whole caret and redraw it entirely (from scratch). save/restore
> doesn't depend on the underlying redraw state of the window, so it
> seems a lot more robust to me.
>
OK, after reading this a few times, I think I understood :). However,
one way or another the appearance of the caret needs to be
sensitive to what it is being drawn over, and xor seems to be the only
simple way to do this. Perhaps what we need is to separate the first
draw from the subsequent re-draws; the first draw done using xor
and imediately saving what we have drawn, the subequent draws
using the save/restore mechanism we now use for clearing.
The save/restore can now handle an unlimited number of separate
rectangles, so in that regard that would be a trivial change. The real
problem is how do we distinguish the primary draw from the
redraws. Coordinances are not enough, for example in right-aligned
text the caret remains static while the text beneath it moves. We
would need some dirtiness mechanism through which the caret
would be notified of any real draws in the window.
Tomas
This archive was generated by hypermail 2.1.4 : Fri Jan 24 2003 - 05:12:30 EST