On 9/5/06, John Bintz <jcoswell@...1414...> wrote:
In situations where the redraw is very complicated, especially if
the
zoom factor is high (~1000-2000%) and if working with a tablet, the
drawing of the dragged or new item on the screen can take longer than
the processing of the events for this item. When drawing, say, a
rectangle from top to bottom in one of these complicated areas, the
preview item may not be finished drawing by the time the new event is
received. This new event will cause the display to start updating
again, ending the previous update and preventing the user from seeing a
completed rectangle. I ran across this many times while working on some
very calligraphy-path heavy drawings recently -- nodes and handles would
not update completely, leaving me to guess as to how a drag operation
would leave my finished drawing. Also, rectangles and arcs wouldn't
draw at all sometimes, because the redraws were being interrupted with
almost every mouse movement.
This sounds reasonable, but your change seems to remove any
interruptibility at all, e.g. while dragging a rubberband. Is that so?
Without interruptibility, while each rubberband rect is redrawn fully,
it may take quite a long time for it to complete. So while you will
see the entire rect, it will lag behind the mouse.
By contrast, with interruptibility, you may see only the top strip of
the rubberband rectangle, but it is much more responsive and tracks
the mouse more closely. Besides, in my testing, it is never so bad as
to never completely redraw; when I move the pen fast (I use a Graphire
tablet with pen), I see the top strip only, but as soon as I slow it
down, it "gets through" and starts doing complete or almost complete
redraws. So I never perceived this as a problem, and indeed considered
it to be an advantage.
Similarly, when I drag a big and complex object, previously (without
interruptibility) it was very frustrating: each redraw was complete
and took a lot of time, and therefore the redraws were lagging behing
the mouse quite a lot. Now, with interruptibility, when I move the pen
fast, it looks like I'm dragging only the top strip of the object, and
it is therefore much more responsive. I can watch this top strip to
position the object much more interactively than before, and as soon
as I slow down or stop my movement, it completes the redraw in the new
position. So, again, to me this is an advantage, not a problem.
If however for you this is a problem, let's find a compromise. I think
a better approach would be to force _some_ of the redraws to be
complete and let others be interrupted. For example, after every 5
interrupted redraws insert one forced complete one. I think this will
be the best approach overall. What do you think?
--
bulia byak
Inkscape. Draw Freely.
http://www.inkscape.org