gtk, cocoa: fix auto-sizing of text `message%'s

original commit: 71df6ddc051414540ff4e80503b5b4f7aec78ee9
This commit is contained in:
Matthew Flatt 2011-04-08 14:21:19 -06:00
parent 7210d6b63a
commit ca0ee2dd53
4 changed files with 22 additions and 4 deletions

View File

@ -142,9 +142,15 @@
(cond (cond
[(symbol? s) (void)] [(symbol? s) (void)]
[(string? s) [(string? s)
(let-values ([(mw mh) (get-window-text-extent s orig-font #t)]) (let ([m (mred->wx this)])
(super-min-width (+ dx mw)) (if (send m set-preferred-size)
(super-min-height (+ dy mh)))] (let ([w (box 0)] [h (box 0)])
(send m get-size w h)
(super-min-width (unbox w))
(super-min-height (unbox h)))
(let-values ([(mw mh) (get-window-text-extent s orig-font #t)])
(super-min-width (+ dx mw))
(super-min-height (+ dy mh)))))]
[(s . is-a? . wx:bitmap%) [(s . is-a? . wx:bitmap%)
(super-min-width (+ dx (send s get-width))) (super-min-width (+ dx (send s get-width)))
(super-min-height (+ dy (send s get-height)))])))]) (super-min-height (+ dy (send s get-height)))])))])

View File

@ -119,5 +119,9 @@
(define/override (gets-focus?) #f) (define/override (gets-focus?) #f)
(define/public (set-preferred-size)
(tellv (get-cocoa) sizeToFit)
#t)
(def/public-unimplemented get-font)) (def/public-unimplemented get-font))

View File

@ -6,7 +6,8 @@
"item.rkt" "item.rkt"
"utils.rkt" "utils.rkt"
"types.rkt" "types.rkt"
"pixbuf.rkt") "pixbuf.rkt"
"window.rkt")
(provide (provide
(protect-out message% (protect-out message%
@ -83,4 +84,9 @@
(gtk_image_set_from_pixbuf (get-gtk) pixbuf) (gtk_image_set_from_pixbuf (get-gtk) pixbuf)
(release-pixbuf pixbuf)))])) (release-pixbuf pixbuf)))]))
(define/public (set-preferred-size)
(gtk_widget_set_size_request (get-gtk) -1 -1)
(set-auto-size)
#t)
(def/public-unimplemented get-font)) (def/public-unimplemented get-font))

View File

@ -116,5 +116,7 @@
(set-size -11111 -11111 32 32) (set-size -11111 -11111 32 32)
(auto-size font label 0 0 0 0)) (auto-size font label 0 0 0 0))
(define/public (set-preferred-size) #f)
(define/override (get-setimage-message) (define/override (get-setimage-message)
STM_SETIMAGE))) STM_SETIMAGE)))