racket/collects/mred/private/wx/gtk
Matthew Flatt 55f98a15d4 racket/gui gtk: make `on-demand' for menus work better
There appears to be no way to make `on-demand' work right for the
Unity window manager's global menu bar, since there's no notificiation
when the menu bar is clicked. We approximate the correct behavior
by calling `on-demand' when a containing frame loses the keyboard
focus, which might be because the menu bar was clicked; that may be
too late (because the menu has already been shown), but it should
work most of the time.

Closes PR 13347.

Relevant to PR 13395, but DrRacket will have to change to work
around the remaining limitations of `on-demand'.
2013-01-01 15:55:36 -07:00
..
button.rkt
canvas.rkt racket/gui: fix access of scrollbar values for canvas without a scrollbar 2012-08-12 20:17:29 -06:00
check-box.rkt
choice.rkt racket/gui: add delete' to choice%' and `list-control<%>' 2012-11-04 08:25:43 -07:00
client-window.rkt
clipboard.rkt racket/gui: implement set-clipboard-bitmap' in clipboard<%>' 2012-05-26 19:42:48 -06:00
colordialog.rkt
combo.rkt
const.rkt
cursor.rkt
dc.rkt
dialog.rkt
filedialog.rkt
frame.rkt racket/gui gtk: make `on-demand' for menus work better 2013-01-01 15:55:36 -07:00
gauge.rkt
gcwin.rkt
gl-context.rkt
group-panel.rkt
init.rkt
item.rkt
keycode.rkt
keymap.rkt
list-box.rkt
menu-bar.rkt racket/gui gtk: make `on-demand' for menus work better 2013-01-01 15:55:36 -07:00
menu-item.rkt
menu.rkt
message.rkt
panel.rkt
pixbuf.rkt
platform.rkt racket/gui: add `get-current-mouse-state' 2012-11-07 14:37:39 -07:00
printer-dc.rkt racket/gui gtk: fix end-doc' for printer-dc%' 2012-11-20 07:15:28 -07:00
procs.rkt
queue.rkt
radio-box.rkt
README.txt
slider.rkt
stddialog.rkt
style.rkt
tab-panel.rkt
types.rkt Lots of bad TAB eliminations. 2012-11-07 11:22:20 -05:00
unique.rkt
utils.rkt
w32.rkt
widget.rkt
win32.rkt
window.rkt Lots of bad TAB eliminations. 2012-11-07 11:22:20 -05:00
x11.rkt

Allocation rules:

 * Use `as-gtk-allocation' when creating a Gtk widget that is the main
   container for a given window<%> object. When the resulting
   reference becomes unreachable, the widget will be released with
   gtk_widget_destroy() through a finalizer.

 * Use `atomically' to create and attach a sub-widget within the main
   widget.  Don't use gtk_widget_destroy(); the containing widget will
   destroy the enclosing widget.

 * For temporary objects, use `atomically' to wrap both the allocation
   and release.

Every call to a function whose name contains "new" needs to be in one
of those cases.