cocoa & gtk: fix set-label with bitmap on message%
Closes PR 11462 original commit: 04a4ad269fb446000bb463e793e6e8e16457499d
This commit is contained in:
parent
86e4eed112
commit
f7594ac5c4
|
@ -58,7 +58,7 @@
|
|||
;; for keyword use
|
||||
[font no-val])
|
||||
(rename [super-set-label set-label])
|
||||
(private-field [label lbl][callback cb])
|
||||
(private-field [label lbl][callback cb] [is-bitmap? (lbl . is-a? . wx:bitmap%)])
|
||||
(override
|
||||
[get-label (lambda () label)]
|
||||
[get-plain-label (lambda () (and (string? label) (wx:label->plain-label label)))]
|
||||
|
@ -69,8 +69,12 @@
|
|||
(let ([l (if (string? l)
|
||||
(string->immutable-string l)
|
||||
l)])
|
||||
(send wx set-label l)
|
||||
(set! label l))))])
|
||||
(when (or (and is-bitmap?
|
||||
(l . is-a? . wx:bitmap%))
|
||||
(and (not is-bitmap?)
|
||||
(string? l)))
|
||||
(send wx set-label l)
|
||||
(set! label l)))))])
|
||||
(public
|
||||
[hidden-child? (lambda () #f)] ; module-local method
|
||||
[label-checker (lambda () check-label-string/false)] ; module-local method
|
||||
|
|
|
@ -94,7 +94,11 @@
|
|||
[no-show? (memq 'deleted style)])
|
||||
|
||||
(define/override (set-label label)
|
||||
(tellv (get-cocoa) setTitleWithMnemonic: #:type _NSString label))
|
||||
(cond
|
||||
[(string? label)
|
||||
(tellv (get-cocoa) setTitleWithMnemonic: #:type _NSString label)]
|
||||
[else
|
||||
(tellv (get-cocoa) setImage: (bitmap->image label))]))
|
||||
|
||||
(define/override (gets-focus?) #f)
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
(require racket/class
|
||||
ffi/unsafe
|
||||
"../../syntax.rkt"
|
||||
"../../lock.rkt"
|
||||
"item.rkt"
|
||||
"utils.rkt"
|
||||
"types.rkt"
|
||||
|
@ -21,6 +22,7 @@
|
|||
(define-gtk gtk_label_set_text_with_mnemonic (_fun _GtkWidget _string -> _void))
|
||||
(define-gtk gtk_image_new_from_stock (_fun _string _int -> _GtkWidget))
|
||||
(define-gtk gtk_misc_set_alignment (_fun _GtkWidget _float _float -> _void))
|
||||
(define-gtk gtk_image_set_from_pixbuf (_fun _GtkWidget _GdkPixbuf -> _void))
|
||||
|
||||
(define (mnemonic-string s)
|
||||
(if (regexp-match? #rx"&" s)
|
||||
|
@ -75,6 +77,13 @@
|
|||
(set-auto-size)
|
||||
|
||||
(define/override (set-label s)
|
||||
(gtk_label_set_text_with_mnemonic (get-gtk) (mnemonic-string s)))
|
||||
(cond
|
||||
[(string? s)
|
||||
(gtk_label_set_text_with_mnemonic (get-gtk) (mnemonic-string s))]
|
||||
[else
|
||||
(let ([pixbuf (bitmap->pixbuf s)])
|
||||
(atomically
|
||||
(gtk_image_set_from_pixbuf (get-gtk) pixbuf)
|
||||
(release-pixbuf pixbuf)))]))
|
||||
|
||||
(def/public-unimplemented get-font))
|
||||
|
|
Loading…
Reference in New Issue
Block a user