42 lines
2.0 KiB
Racket
42 lines
2.0 KiB
Racket
(module wxcontainer racket/base
|
|
(require racket/class
|
|
racket/list
|
|
(prefix-in wx: "kernel.rkt")
|
|
"lock.rkt"
|
|
"helper.rkt"
|
|
"wx.rkt")
|
|
|
|
(provide (protect-out make-container-glue%
|
|
wx-make-container%))
|
|
|
|
(define (make-container-glue% %)
|
|
(class %
|
|
(init mr prxy)
|
|
(init-rest args)
|
|
(inherit do-place-children do-get-graphical-min-size get-children-info get-hidden-child)
|
|
(define mred mr)
|
|
(define proxy prxy)
|
|
(override*
|
|
[get-graphical-min-size (lambda ()
|
|
(cond
|
|
[mred (let ([info
|
|
(map (lambda (i)
|
|
(list (child-info-x-min i) (child-info-y-min i)
|
|
(child-info-x-stretch i) (child-info-y-stretch i)))
|
|
(get-children-info))])
|
|
(let-values ([(w h) (as-exit (lambda () (send mred container-size
|
|
(if (get-hidden-child)
|
|
(cdr info) ; hidden child is first
|
|
info))))])
|
|
(list w h)))]
|
|
[else (do-get-graphical-min-size)]))]
|
|
[place-children (lambda (l w h)
|
|
(cond
|
|
[(null? l) null]
|
|
[mred (as-exit (lambda () (send mred place-children l w h)))]
|
|
[else (do-place-children l w h)]))])
|
|
(apply super-make-object mred proxy args)))
|
|
|
|
;; make-container% - for panels and top-level windows
|
|
(define (wx-make-container% %) %))
|