diff --git a/collects/mred/private/mritem.rkt b/collects/mred/private/mritem.rkt index b44cd34b28..bff01dba81 100644 --- a/collects/mred/private/mritem.rkt +++ b/collects/mred/private/mritem.rkt @@ -142,9 +142,15 @@ (cond [(symbol? s) (void)] [(string? s) - (let-values ([(mw mh) (get-window-text-extent s orig-font #t)]) - (super-min-width (+ dx mw)) - (super-min-height (+ dy mh)))] + (let ([m (mred->wx this)]) + (if (send m set-preferred-size) + (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%) (super-min-width (+ dx (send s get-width))) (super-min-height (+ dy (send s get-height)))])))]) diff --git a/collects/mred/private/wx/cocoa/message.rkt b/collects/mred/private/wx/cocoa/message.rkt index 79b865e8d8..212b043ea9 100644 --- a/collects/mred/private/wx/cocoa/message.rkt +++ b/collects/mred/private/wx/cocoa/message.rkt @@ -119,5 +119,9 @@ (define/override (gets-focus?) #f) + (define/public (set-preferred-size) + (tellv (get-cocoa) sizeToFit) + #t) + (def/public-unimplemented get-font)) diff --git a/collects/mred/private/wx/gtk/message.rkt b/collects/mred/private/wx/gtk/message.rkt index 545f8a78ef..c11673507c 100644 --- a/collects/mred/private/wx/gtk/message.rkt +++ b/collects/mred/private/wx/gtk/message.rkt @@ -6,7 +6,8 @@ "item.rkt" "utils.rkt" "types.rkt" - "pixbuf.rkt") + "pixbuf.rkt" + "window.rkt") (provide (protect-out message% @@ -83,4 +84,9 @@ (gtk_image_set_from_pixbuf (get-gtk) 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)) diff --git a/collects/mred/private/wx/win32/message.rkt b/collects/mred/private/wx/win32/message.rkt index e4f6fdcef9..3403c676bf 100644 --- a/collects/mred/private/wx/win32/message.rkt +++ b/collects/mred/private/wx/win32/message.rkt @@ -116,5 +116,7 @@ (set-size -11111 -11111 32 32) (auto-size font label 0 0 0 0)) + (define/public (set-preferred-size) #f) + (define/override (get-setimage-message) STM_SETIMAGE)))