+(defbinding %window-get-default-size () nil
+ (window window)
+ (width int :out)
+ (height int :out))
+
+(defun window-get-default-size (window)
+ (multiple-value-bind (width height) (%window-get-default-size window)
+ (values (unless (= width -1) width) (unless (= height -1) height))))
+
+(defbinding window-get-frame-dimensions () nil
+ (window window)
+ (left int :out) (top int :out) (rigth int :out) (bottom int :out))
+
+(defbinding %window-get-icon-list () (glist gdk:pixbuf)
+ (window window))
+
+(defbinding window-get-position () nil
+ (window window)
+ (root-x int :out)
+ (root-y int :out))
+
+(defbinding window-get-size () nil
+ (window window)
+ (width int :out)
+ (height int :out))
+
+(defbinding window-move () nil
+ (window window)
+ (x int)
+ (y int))
+
+(defbinding window-parse-geometry () boolean
+ (window window)
+ (geometry string))
+
+(defbinding window-reshow-with-initial-size () nil
+ (window window))
+
+(defbinding window-resize () nil
+ (window window)
+ (width int)
+ (heigth int))
+
+(defbinding (window-default-icon-list "gtk_window_get_default_icon_list")
+ () (glist gdk:pixbuf))
+
+(defun window-default-icon ()
+ (first (window-default-icon-list)))
+
+(defbinding %window-set-default-icon-list () nil
+ (icons (glist gdk:pixbuf)))
+
+(defun (setf window-default-icon-list) (icons)
+ (%window-set-default-icon-list icons)
+ icons)
+
+(defbinding %window-set-default-icon () nil
+ (icons (glist gdk:pixbuf)))
+
+(defmethod (setf window-default-icon) ((icon gdk:pixbuf))
+ (%window-set-default-icon icon)
+ icon)
+
+(defmethod (setf window-group) ((group window-group) (window window))
+ (window-group-add-window group window)
+ group)
+
+(defbinding %window-set-default-icon-from-file () boolean
+ (filename pathname)
+ (nil null))
+
+(defmethod (setf window-default-icon) ((icon-file pathname))
+ (%window-set-default-icon-from-file icon-file)
+ icon-file)
+
+(defbinding %window-set-icon-from-file () boolean
+ (window window)
+ (filename pathname)
+ (nil null))
+
+(defmethod (setf window-icon) ((icon-file pathname) (window window))
+ (%window-set-icon-from-file window icon-file)
+ icon-file)
+
+(defbinding window-set-auto-startup-notification () nil
+ (setting boolean))
+
+(defbinding decorated-window-init () nil
+ (window window))
+
+(defbinding decorated-window-calculate-frame-size () nil
+ (window window))
+
+(defbinding decorated-window-set-title () nil
+ (window window)
+ (title string))
+
+(defbinding decorated-window-move-resize-window () nil
+ (window window)
+ (x int)
+ (y int)
+ (width int)
+ (heigth int))
+
+
+;;; Window group
+
+(defmethod initialize-instance ((window-group window-group) &rest initargs
+ &key window windows)
+ (declare (ignore window windows))
+ (prog1
+ (call-next-method)
+ (initial-add window-group #'window-group-add-window
+ initargs :window :windows)))
+
+
+(defbinding window-group-add-window () nil
+ (window-group window-group)
+ (window window))
+
+(defbinding window-group-remove-window () nil
+ (window-group window-group)
+ (window window))
+
+
+;;; Scrolled window
+
+(defun (setf scrolled-window-scrollbar-policy) (policy window)
+ (setf (scrolled-window-hscrollbar-policy window) policy)
+ (setf (scrolled-window-vscrollbar-policy window) policy))
+
+(defbinding scrolled-window-add-with-viewport () nil
+ (scrolled-window scrolled-window)
+ (child widget))