gtk: fix memory management for menus
original commit: 3f28042517322ea4a7120e37e7a77c24a3d059f2
This commit is contained in:
parent
790d5d1f01
commit
dca0bd7385
|
@ -135,7 +135,9 @@
|
|||
(define (append-menu menu title)
|
||||
(send menu set-parent this)
|
||||
(atomically
|
||||
(let* ([item (gtk_menu_item_new_with_mnemonic (fixup-mneumonic title))]
|
||||
(let* ([item (let ([title (fixup-mneumonic title)])
|
||||
(as-gtk-allocation
|
||||
(gtk_menu_item_new_with_mnemonic title)))]
|
||||
[item-wx (new top-menu% [parent this] [gtk item])])
|
||||
(connect-select item)
|
||||
(set! menus (append menus (list (list item menu item-wx))))
|
||||
|
|
|
@ -182,11 +182,13 @@
|
|||
(public [append-item append])
|
||||
(define (append-item i label help-str-or-submenu chckable?)
|
||||
(atomically
|
||||
(let ([item-gtk ((if (and chckable?
|
||||
(not (help-str-or-submenu . is-a? . menu%)))
|
||||
gtk_check_menu_item_new_with_mnemonic
|
||||
gtk_menu_item_new_with_mnemonic)
|
||||
(fixup-mneumonic label))])
|
||||
(let ([item-gtk (let ([label (fixup-mneumonic label)])
|
||||
(as-gtk-allocation
|
||||
((if (and chckable?
|
||||
(not (help-str-or-submenu . is-a? . menu%)))
|
||||
gtk_check_menu_item_new_with_mnemonic
|
||||
gtk_menu_item_new_with_mnemonic)
|
||||
label)))])
|
||||
(if (help-str-or-submenu . is-a? . menu%)
|
||||
(let ([submenu help-str-or-submenu])
|
||||
(let ([gtk (send submenu get-gtk)])
|
||||
|
@ -208,7 +210,7 @@
|
|||
|
||||
(define/public (append-separator)
|
||||
(atomically
|
||||
(let ([item-gtk (gtk_separator_menu_item_new)])
|
||||
(let ([item-gtk (as-gtk-allocation (gtk_separator_menu_item_new))])
|
||||
(set! items (append items (list (list (new separator-item-handler%) item-gtk #f #f))))
|
||||
(gtk_menu_shell_append gtk item-gtk)
|
||||
(gtk_widget_show item-gtk))))
|
||||
|
|
Loading…
Reference in New Issue
Block a user