CLIM mail archive


linear-output-record problem?

   Date: Wed, 28 Oct 92 15:26:22 PPE
   From: Curt Eggemeyer <>

   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 | Thread Index