CLIM mail archive

[Prev][Next][Index][Thread]

Re: Replacing presentations (repost)



    Having been unsuccessful in my previous approach to "rolling my own"
    incremental redisplay, I've revised my plan and found another way to fail.
    
    [...]    
    
    Approach #2 (current attempt):
    a) get the BOUNDING-RECTANGLE-MIN-X, BOUNDING-RECTANGLE-MIN-Y, and
       OUTPUT-RECORD-PARENT of each presentation
    b) remove the orginal presentation using ERASE-OUTPUT-RECORD
    c) create a new presentation using PRESENT inside of
       WITH-OUTPUT-RECORDING-OPTIONS (STREAM :DRAW NIL :RECORD T)

Here the newly generated output-records are inserted into the output history.

    d) add the new presentation (output record) to the parent of the old one
       (which happens to be a STANDARD-CELL-OUTPUT-RECORD in this case)
       using ADD-OUTPUT-RECORD

What is happening here if you use ADD-OUTPUT-RECORD on a child-record that
*already*
is in the output history of a pane? (i.e., it already has a parent? Is the
reference 
to this child correctly removed from the old parent?)
Maybe you should use WITH-OUTPUT-TO-OUTPUT-RECORD instead of the 
WITH-OUTPUT-RECORDING-OPTIONS (STREAM :DRAW NIL :RECORD T) above?!

    e) fix the coordinates of the new presentation using
    OUTPUT-RECORD-SET-POSITION
    f) call REPLAY on the new presentation
    
    Problem #2:
    Something in the output recording protocol becomes seriously broken. One
    clear
    aspect of this is that presentations disappear and reappear in new positions
    when the window is scrolled.
    
    
    Surely there must be a simple way to achieve my very modest goal.
    Would someone please put me out of my misery and tell me what it is? :-)

;;; - Stefan Bernemann   (berni@iml.fhg.de)



Main Index | Thread Index