CLIM mail archive
Date: Wed, 28 Oct 92 15:26:22 PPE
From: Curt Eggemeyer <email@example.com>
In CLIM 1.1 world!
Is there a bug with linear-output-record when you perform an erase-output-
record on one that is overlapping others within another linear-output-record
that is their parent?
The bug is in your code. See below.
Below I explicitely control my output-record tree as follows:
(setq a-rec (with-output-to-output-record (stream)
(with-output-as-presentation (:object something :stream stream)
(draw-something something stream))))
(add-output-record-element the-parent-record-of-something a-rec)
(replay-1 a-rec stream +everywhere+)
The bug is that you are calling REPLAY-1 directly. You should call
REPLAY instead. One of the things REPLAY does is to turn off output
recording during the replay (before calling REPLAY-1). Thus, when you
call REPLAY-1 directly the DRAW-RECTANGLE call that happens as part of
the replay actually creates another rectangle output record, right "on
top" of the original. So, while you would define a new REPLAY-1
method if you were writing a new output record class, you should only
invoke replay via the REPLAY function. I see that the documentation
doesn't make this very clear.
... That a-rec guy happens to be overlapping other records on the display.
Now if I do a (erase-output-record a-rec stream), the record erases itself
and then redraws itself. Even though it is on the display its
mouse-sensitivity is gone. What gives? Should I be using a different output-
record type. If so what?
Your call to ERASE-OUTPUT-RECORD is working. It's just that the extra
rectangle output record that was created by replay is still there,
serving as a sort of "stunt double" for the erstwhile original record.
Main Index |