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
|
;; for keyword use
|
||||||
[font no-val])
|
[font no-val])
|
||||||
(rename [super-set-label set-label])
|
(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
|
(override
|
||||||
[get-label (lambda () label)]
|
[get-label (lambda () label)]
|
||||||
[get-plain-label (lambda () (and (string? label) (wx:label->plain-label label)))]
|
[get-plain-label (lambda () (and (string? label) (wx:label->plain-label label)))]
|
||||||
|
@ -69,8 +69,12 @@
|
||||||
(let ([l (if (string? l)
|
(let ([l (if (string? l)
|
||||||
(string->immutable-string l)
|
(string->immutable-string l)
|
||||||
l)])
|
l)])
|
||||||
(send wx set-label l)
|
(when (or (and is-bitmap?
|
||||||
(set! label l))))])
|
(l . is-a? . wx:bitmap%))
|
||||||
|
(and (not is-bitmap?)
|
||||||
|
(string? l)))
|
||||||
|
(send wx set-label l)
|
||||||
|
(set! label l)))))])
|
||||||
(public
|
(public
|
||||||
[hidden-child? (lambda () #f)] ; module-local method
|
[hidden-child? (lambda () #f)] ; module-local method
|
||||||
[label-checker (lambda () check-label-string/false)] ; module-local method
|
[label-checker (lambda () check-label-string/false)] ; module-local method
|
||||||
|
|
|
@ -94,7 +94,11 @@
|
||||||
[no-show? (memq 'deleted style)])
|
[no-show? (memq 'deleted style)])
|
||||||
|
|
||||||
(define/override (set-label label)
|
(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)
|
(define/override (gets-focus?) #f)
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
(require racket/class
|
(require racket/class
|
||||||
ffi/unsafe
|
ffi/unsafe
|
||||||
"../../syntax.rkt"
|
"../../syntax.rkt"
|
||||||
|
"../../lock.rkt"
|
||||||
"item.rkt"
|
"item.rkt"
|
||||||
"utils.rkt"
|
"utils.rkt"
|
||||||
"types.rkt"
|
"types.rkt"
|
||||||
|
@ -21,6 +22,7 @@
|
||||||
(define-gtk gtk_label_set_text_with_mnemonic (_fun _GtkWidget _string -> _void))
|
(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_image_new_from_stock (_fun _string _int -> _GtkWidget))
|
||||||
(define-gtk gtk_misc_set_alignment (_fun _GtkWidget _float _float -> _void))
|
(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)
|
(define (mnemonic-string s)
|
||||||
(if (regexp-match? #rx"&" s)
|
(if (regexp-match? #rx"&" s)
|
||||||
|
@ -75,6 +77,13 @@
|
||||||
(set-auto-size)
|
(set-auto-size)
|
||||||
|
|
||||||
(define/override (set-label s)
|
(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))
|
(def/public-unimplemented get-font))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user