+ ("GtkWidget"
+ :slots
+ ((child-properties
+ :allocation :instance
+ :accessor widget-child-properties
+ :type container-child)
+ (window
+ :allocation :virtual
+ :getter "gtk_widget_get_window"
+ :reader widget-window
+ :type gdk:window)
+ (parent :merge t :initarg nil)
+ (visible :merge t :initarg nil)
+ (parent-window
+ :allocation :virtual
+ :getter %widget-parent-window
+ :setter "gtk_widget_set_parent_window"
+ :accessor widget-parent-window
+ :initarg :parent-window
+ :type gdk:window)
+ (state
+ :allocation :virtual
+ :getter "gtk_widget_get_state"
+ :setter "gtk_widget_set_state"
+ :accessor widget-state
+ :initarg :state
+ :type state-type)
+ (colormap
+ :allocation :virtual
+ :getter "gtk_widget_get_colormap"
+ :setter "gtk_widget_set_colormap"
+ :initarg :colormap
+ :accessor widget-colormap
+ :type gdk:colormap)
+ (visual
+ :allocation :virtual
+ :getter "gtk_widget_get_visual"
+ :reader widget-visual
+ :type gdk:visual)
+ (direction
+ :allocation :virtual
+ :getter "gtk_widget_get_direction"
+ :setter "gtk_widget_set_direction"
+ :accessor widget-direction
+ :initarg :direction
+ :type text-direction)
+ (composite-name
+ :allocation :virtual
+ :getter "gtk_widget_get_composite_name"
+ :setter "gtk_widget_set_composite_name"
+ :accessor widget-composite-name
+ :initarg :composite-name
+ :type (copy-of string)) ; will leak the string when setting
+ (settings
+ :allocation :virtual
+ :getter "gtk_widget_get_settings"
+ :accessor widget-settings
+ :type settings)
+ (child-visible
+ :allocation :virtual
+ :getter "gtk_widget_get_child_visible"
+ :setter "gtk_widget_set_child_visible"
+ :accessor widget-child-visible-p
+ :initarg :child-visible
+ :type boolean)
+ (width-request
+ :merge t :unbound -1)
+ (height-request
+ :merge t :unbound -1)))
+
+ ("GtkContainer"
+ :slots
+ ((child :ignore t)
+ (children
+ :allocation :virtual
+ :getter container-children
+ :setter (setf container-children)
+ ;; The following doesn't work because gtk_container_get_children doesn't
+ ;; increase the reference count of the children
+; :getter "gtk_container_get_children"
+; :reader container-children
+; :type (glist widget)
+ )
+ (child-type
+ :allocation :virtual
+ :getter "gtk_container_child_type"
+ :reader container-child-type
+ :type gtype)
+ (focus-child
+ :allocation :virtual
+ :getter "gtk_container_get_focus_child"
+ :setter "gtk_container_set_focus_child"
+ :accessor container-focus-child
+ :initarg :focus-child
+ :type widget)
+ (focus-chain
+ :allocation :virtual
+ :getter container-focus-chain
+ :setter (setf container-focus-chain))
+ (focus-hadjustment
+ :allocation :virtual
+ :getter "gtk_container_get_focus_hadjustment"
+ :setter "gtk_container_set_focus_hadjustment"
+ :accessor container-focus-hadjustment
+ :initarg :focus-hadjustment
+ :type adjustment)
+ (focus-vadjustment
+ :allocation :virtual
+ :getter "gtk_container_get_focus_vadjustment"
+ :setter "gtk_container_set_focus_vadjustment"
+ :accessor container-focus-vadjustment
+ :initarg :focus-vadjustment
+ :type adjustment)
+ (reallocate-redraws
+ :allocation :virtual
+ :getter "gtk_container_get_reallocate_redraws"
+ :setter "gtk_container_set_reallocate_redraws"
+ :accessor container-reallocate-redraws
+ :initarg :reallocate-redraws
+ :type boolean)))
+
+ ("GtkBin"
+ :slots
+ ((child
+ :allocation :virtual
+ :getter "gtk_bin_get_child"
+ :setter (setf bin-child)
+ :reader bin-child
+ :type widget)))
+
+ ("GtkWindow"
+ :slots
+ ((focus-widget
+ :allocation :virtual
+ :getter "gtk_window_get_focus"
+ :setter "gtk_window_set_focus"
+ :accessor window-focus-widget
+ :initarg :focus-widget
+ :type widget)
+ (default-widget
+ :allocation :virtual
+ :getter "gtk_window_get_default"
+ :setter "gtk_window_set_default"
+ :accessor window-default-widget
+ :initarg :default-widget
+ :type widget)
+ (has-frame
+ :allocation :virtual
+ :getter "gtk_window_get_has_frame"
+ :setter "gtk_window_set_has_frame"
+ :accessor window-has-frame-p
+ :initarg :has-frame
+ :type boolean)
+ (icon-list
+ :allocation :virtual
+ :getter "gtk_window_get_icon_list"
+ :setter "gtk_window_set_icon_list"
+ :accessor window-icon-list
+ :initarg :icon-list
+ :type (glist gdk:pixbuf))
+ (mnemonic-modifier
+ :allocation :virtual
+ :getter "gtk_window_get_mnemonic_modifier"
+ :setter "gtk_window_set_mnemonic_modifier"
+ :accessor window-mnemonic-modifier
+ :initarg :mnemonic-modifier
+ :type gdk:modifier-type)
+ (transient-for
+ :allocation :virtual
+ :getter "gtk_window_get_transient_for"
+ :setter "gtk_window_set_transient_for"
+ :accessor window-transient-for
+ :initarg :transient-for
+ :type window)
+ (group
+ :allocation :virtual
+ :getter "gtk_window_get_group"
+ :setter (setf window-group)
+ :reader window-group
+ :initarg :group
+ :type window-group)
+ (default-width :merge t :unbound -1)
+ (default-height :merge t :unbound -1)))