racket/collects/mred/private/wx/gtk
Matthew Flatt e22977667d racket/gui gtk: fix canvas/panel border drawing
The code to draw a border has to determine the widget's position
within the drawing window. Gtk 3.0 has a function to provide that
transformation, but Gtk 2.0 doesn't seem to have one, and it seems
that the transformation implemented in `racket/gui' wasn't right.

Closes PR 13453
2013-01-25 14:21:57 -07:00
..
button.rkt
canvas.rkt
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
colordialog.rkt
combo.rkt
const.rkt
cursor.rkt
dc.rkt
dialog.rkt
filedialog.rkt
frame.rkt fix a bug in recently added display-changed method 2013-01-21 13:47:43 -06: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 racket/gui gtk: fix canvas/panel border drawing 2013-01-25 14:21:57 -07:00
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.