Pinboard-object drawing bug or expected behaviour?
I have noticed that unless I explicitly set the :x, :y, :width and :height
initargs of a pinboard-object in an interface the object is damaged when
something (say, another window, or pinboard-object in the same layout) covers
it. For example the following -
(define-interface test ()
()
(:panes
(pane drawn-pinboard-object
:display-callback 'test-callback))
(:layouts
(pinboard pinboard-layout
'(pane)
:background :white))
(:default-initargs
:layout 'pinboard
:best-width 300
:best-height 300))
(defun test-callback (pane self x y width height)
(declare (ignore self x y width height))
(with-geometry pane
(let ((x-radius (1- (floor %width% 2)))
(y-radius (1- (floor %height% 2))))
(gp:draw-ellipse pane (1+ (+ %x% x-radius)) (1+ (+ %y% y-radius))
x-radius y-radius))))
Unless I set the pane geometry via (pane :x 0 :y 0 :width 300 :height 300) in
the :layouts slot it suffers damage when covered. Is this a bug, or what I
should expect? In my application the objects I draw are scaled relative to the
geometry of the containing interface, so I don't want to have to actually
provide values for these initargs. I have a work-around, but is there a CAPI way
to solve this that I've missed?
Cheers,
Chris