[gtk-cffi-cvs] CVS gtk-cffi/gtk

CVS User rklochkov rklochkov at common-lisp.net
Mon Dec 24 16:32:05 UTC 2012


Update of /project/gtk-cffi/cvsroot/gtk-cffi/gtk
In directory tiger.common-lisp.net:/tmp/cvs-serv3527/gtk

Modified Files:
	combo-box.lisp container.lisp generics.lisp gtk-cffi.asd 
	package.lisp selections.lisp tree-selection.lisp 
	tree-view.lisp widget.lisp 
Added Files:
	drag-drop.lisp 
Log Message:
Reloading after CVS was broken



--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/combo-box.lisp	2012/10/07 12:02:11	1.6
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/combo-box.lisp	2012/12/24 16:32:05	1.7
@@ -12,6 +12,7 @@
 
 (defmethod gconstructor ((combo-box combo-box)
                          &key model area entry &allow-other-keys)
+  (initialize combo-box '(model area entry))
   (cond 
     (model
      (if entry
@@ -26,13 +27,6 @@
          (gtk-combo-box-new-with-entry)
          (gtk-combo-box-new)))))
 
-
-;; separate declaration to avoid auto-adding to initargs
-(defcfun gtk-combo-box-set-model :void (combo-box pobject) (model pobject))
-(defgeneric (setf model) (tree-model combo-box)
-  (:method (tree-model (combo-box combo-box))
-    (gtk-combo-box-set-model combo-box tree-model) tree-model))
-
 (defslots combo-box
   wrap-width :int
   row-span-column :int
@@ -44,10 +38,10 @@
   focus-on-click :boolean
   button-sensitivity sensitivity-type
   entry-text-column :int
+  model pobject
   popup-fixed-width :boolean)
 
 (deffuns combo-box
-  (:get model pobject)
   (:get active-id :string)
   (popup-for-device :void (device pobject))
   (popup :void)
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/container.lisp	2012/10/07 12:02:11	1.6
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/container.lisp	2012/12/24 16:32:05	1.7
@@ -31,11 +31,14 @@
           `(pack ,box ,@(ensure-cons widget)))
         widgets)))
 
-(defmethod (setf kids) (kids (container container))
-  (mapc (lambda (x) (setf (kid container) x)) kids))
+(defgeneric (setf kids) (kids container)
+  (:documentation "Pack kids to container")
+  (:method (kids (container container))
+    (mapc (lambda (x) (setf (kid container) x)) kids)))
 
-(defmethod (setf kid) (kid (container container))
-  (pack container kid))
+(defgeneric (setf kid) (kid container)
+  (:method (kid (container container))
+    (pack container kid)))
 
 (defmethod initialize-instance
   :after ((container container)
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/generics.lisp	2012/10/07 12:02:11	1.5
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/generics.lisp	2012/12/24 16:32:05	1.6
@@ -4,5 +4,8 @@
 (defgeneric text (widget &key)) ;; entry, label, text-buffer
 (defgeneric (setf text) (value widget &key))
 (defgeneric layout-offsets (object)) ;; entry, label, scale
+(defgeneric (setf model) (model object)) ;; combo-box, list-store, 
+                                         ;; tree-model-filter
+
 
 
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/gtk-cffi.asd	2012/10/07 12:02:11	1.29
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/gtk-cffi.asd	2012/12/24 16:32:05	1.30
@@ -45,7 +45,10 @@
    (:file invisible :depends-on (widget))
    (:file actionable :depends-on (widget))
    (:file activatable :depends-on (widget))
-   (:file switch :depends-on (actionable activatable))))
+   (:file switch :depends-on (actionable activatable))
+   (:file drag-drop :depends-on (widget))
+   (:file selections :depends-on (drag-drop))))
+ 
 
 (defsystem gtk-cffi-misc
   :description "Interface to GTK/Glib via CFFI"
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/package.lisp	2012/10/07 12:02:11	1.30
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/package.lisp	2012/12/24 16:32:05	1.31
@@ -600,6 +600,7 @@
    ;; tree-view slots
    #:model
    #:search-column
+   #:expander-column
    #:level-indentation
    #:selection
    #:hover-expand
@@ -612,13 +613,10 @@
    ;; tree-view methods
    #:append-column
    #:insert-column
-   #:get-selection
+   #:selection
    #:path-at-pos
-   #:with-path-at-pos
-   #:%path
    #:column
-   #:get-cursor
-   #:with-get-cursor-path
+   #:cursor
    #:remove-column
 
    #:tree-view-column
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/selections.lisp	2012/01/28 13:44:45	1.1
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/selections.lisp	2012/12/24 16:32:05	1.2
@@ -3,4 +3,7 @@
 (defclass target-list (object)
   ())
 
-
+(defcstruct* target-entry
+  (target :string)
+  (flags :uint)
+  (info :uint))
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/tree-selection.lisp	2012/12/15 14:33:10	1.5
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/tree-selection.lisp	2012/12/24 16:32:05	1.6
@@ -60,25 +60,29 @@
               (mem-ref p 'pobject)))))
     
 
-(defcfun gtk-tree-selection-selected-foreach :void
-  (selection pobject) (func pfunction) (data pdata))
-
-(defvar *tree-selection-foreach* nil)
-
-(defcallback cb-tree-selection-foreach :boolean
-  ((model pobject) (path tree-path :free-from-foreign nil) 
-   (tree-iter (struct tree-iter)) (data pdata))
-  (when *tree-selection-foreach*
-    (funcall *tree-selection-foreach* model path tree-iter data)))
-
-(defmethod foreach ((tree-selection tree-selection)
-                               func &optional (data (null-pointer)))
-  (when func    
-    (let ((*tree-selection-foreach* func))
-      (gtk-tree-selection-selected-foreach 
-       tree-selection (if (functionp func)
-                          (callback cb-tree-selection-foreach) func)
-       data))))
+(make-foreach (tree-selection gtk-tree-selection-selected-foreach)
+              (model pobject) (path tree-path :free-from-foreign nil) 
+              (tree-iter (struct tree-iter)) (data pdata))
+
+;; (defcfun gtk-tree-selection-selected-foreach :void
+;;   (selection pobject) (func pfunction) (data pdata))
+
+;; (defvar *tree-selection-foreach* nil)
+
+;; (defcallback cb-tree-selection-foreach :boolean
+;;   ((model pobject) (path tree-path :free-from-foreign nil) 
+;;    (tree-iter (struct tree-iter)) (data pdata))
+;;   (when *tree-selection-foreach*
+;;     (funcall *tree-selection-foreach* model path tree-iter data)))
+
+;; (defmethod foreach ((tree-selection tree-selection)
+;;                                func &optional (data (null-pointer)))
+;;   (when func    
+;;     (let ((*tree-selection-foreach* func))
+;;       (gtk-tree-selection-selected-foreach 
+;;        tree-selection (if (functionp func)
+;;                           (callback cb-tree-selection-foreach) func)
+;;        data))))
 
 
 
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/tree-view.lisp	2012/12/15 14:33:11	1.5
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/tree-view.lisp	2012/12/24 16:32:05	1.6
@@ -1,3 +1,11 @@
+;;; GtkTreeView
+;;;
+;;; (foreach tree-view ...) = gtk-tree-view-map-expanded-rows
+;;; (path-at-pos ... :is-blank t) = gtk-tree-view-is-blank-at-pos
+;;; (convert-bin-window-to-widget tree-view x y) -> (list wx wy) = 
+;;;              gtk-tree-view-convert-bin-window-to-widget-coords
+;;; (convert-{smth} ...) = gtk-tree-view-convert-{smth}-coords
+
 (in-package :gtk-cffi)
 
 (defclass tree-view (container)
@@ -28,7 +36,8 @@
   hover-expand :boolean
   rubber-banding :boolean
   search-column :int
-  expander-column pobject)
+  expander-column pobject
+  reorderable :boolean)
   
 
 (deffuns tree-view 
@@ -40,14 +49,29 @@
   (:get column pobject (n :int))
   (:get n-columns :int)
   (move-column-after :void (column pobject) (base-column pobject))
-  (scroll-to-point :void (x :int) (y :int)))
+  (scroll-to-point :void (x :int) (y :int))
+  (row-activated :void (path tree-path) (comumn pobject))
+  (expand-all :void)
+  (collapse-all :void)
+  (expand-to-path :void (path tree-path))
+  (expand-row :void (path tree-path) (open-all :boolean))
+  (collapse-row :void (path tree-path))
+  (row-expanded :boolean (path tree-path))
+  (:get bin-window pobject))
+  
+  
+  
 
 (defcfun gtk-tree-view-scroll-to-cell :void 
-  (tree-view pobject) (path ptree-path) (column pobject) (use-align :boolean) (row-align :float) (col-align :float))
+  (tree-view pobject) (path ptree-path) (column pobject) (use-align :boolean) 
+  (row-align :float) (col-align :float))
 
 (defgeneric scroll-to-cell (tree-view path column &key row-align col-align)
-  (:method ((tree-view tree-view) path column &key (row-align 0.0 row-align-p) (col-align 0.0 col-align-p))
-    (gtk-tree-view-scroll-to-cell tree-view path column (or row-align-p col-align-p) row-align col-align)))
+  (:method ((tree-view tree-view) path column 
+            &key (row-align 0.0 row-align-p) (col-align 0.0 col-align-p))
+    (gtk-tree-view-scroll-to-cell tree-view path column 
+                                  (or row-align-p col-align-p) 
+                                  row-align col-align)))
 
 
 (defmethod (setf columns) (columns (tree-view tree-view))
@@ -73,18 +97,38 @@
   (x :int) (y :int) (path :pointer) (column :pointer)
   (cell-x :pointer) (cell-y :pointer))
 
-(defmethod path-at-pos ((tree-view tree-view) x y)
-  (with-foreign-outs-list 
-      ((path 'tree-path) (column 'pobject) 
-       (cell-x :int) (cell-y :int)) :if-success
-    (gtk-tree-view-get-path-at-pos tree-view x y path column cell-x cell-y)))
+(defgeneric path-at-pos (tree-view x y)
+  (:method ((tree-view tree-view) x y)
+    (with-foreign-outs-list 
+        ((path 'tree-path) (column 'pobject)
+         (cell-x :int) (cell-y :int)) :if-success
+      (gtk-tree-view-get-path-at-pos tree-view x y path column cell-x cell-y))))
 
 (defcfun gtk-tree-view-get-cursor :void (view pobject)
   (path :pointer) (column :pointer))
 
-(defmethod get-cursor ((tree-view tree-view))
-  (with-foreign-outs-list ((path 'tree-path) (column 'pobject)) :ignore
-      (gtk-tree-view-get-cursor tree-view path column)))
+(defgeneric cursor (tree-view)
+  (:method ((tree-view tree-view))
+    (with-foreign-outs-list ((path 'tree-path) (column 'pobject)) :ignore
+      (gtk-tree-view-get-cursor tree-view path column))))
+
+(defcfun gtk-tree-view-set-cursor :void
+  (tree-view pobject) (path tree-path) (focus-column pobject)
+  (start-editing :boolean))
+
+(defcfun gtk-tree-view-set-cursor-on-cell :void
+  (tree-view pobject) (path tree-path) (focus-column pobject)
+  (focus-cell pobject) (start-editing :boolean))
+
+(defgeneric (setf cursor) (path+column tree-view &key start-editing cell)
+  (:method (path+column (tree-view tree-view) &key start-editing cell)
+    (destructuring-bind (path column) path+column
+      (if cell
+          (gtk-tree-view-set-cursor-on-cell tree-view path column 
+                                            cell start-editing)
+          (gtk-tree-view-set-cursor tree-view path column start-editing)))
+    path+column))
+          
 
 (defcfun gtk-tree-view-insert-column-with-data-func :int
   (tree-view pobject) (position :int) (title :string) (cell pobject)
@@ -100,15 +144,99 @@
   (tree-view pobject) (func pfunction) (user-data pdata) (destroy pfunction))
 
 (defcallback cb-column-drop-function :boolean
-    ((tree-view pobject) (column pobject) (prev-column pobject) (next-column pobject) (data pdata))
+    ((tree-view pobject) (column pobject) (prev-column pobject) 
+     (next-column pobject) (data pdata))
   (funcall data tree-view column prev-column next-column))
 
-(defgeneric (setf column-drag-function) (func tree-view &key data destroy-notify)
+(defgeneric (setf column-drag-function) (func tree-view 
+                                              &key data destroy-notify)
   (:documentation "gtk_tree_view_set_column_drag_function")
   (:method (func (tree-view tree-view) &key data destroy-notify)
     (set-callback tree-view gtk-tree-view-set-column-drag-function
                   cb-column-drop-function func data destroy-notify)))
-                
+
+(make-foreach (tree-view gtk-tree-view-map-expanded-rows)
+              (path ptree-path) (data pdata))
+
+(defcfun gtk-tree-view-is-blank-at-pos :boolean
+  (tree-view pobject) (x :int) (y :int)
+  (path :pointer) (column :pointer) (cell-x :pointer) (cell-y :pointer))
+
+(defcfun gtk-tree-view-path-at-pos :boolean
+  (tree-view pobject) (x :int) (y :int)
+  (path :pointer) (column :pointer) (cell-x :pointer) (cell-y :pointer))
+
+(defgeneric path-at-pos (tree-view x y &key is-blank)
+  (:documentation "if is-blank gtk-tree-view-is-blank-at-pos called, else
+gtk-tree-view-path-at-pos")
+  (:method ((tree-view tree-view) x y &key is-blank)
+    (with-foreign-outs ((path 'tree-path) (column 'pobject) 
+                        (cell-x :int) (cell-y :int)) :return
+      (funcall (if is-blank #'gtk-tree-view-is-blank-at-pos 
+                   #'gtk-tree-view-get-path-at-pos)
+               tree-view x y path column cell-x cell-y))))
+
+(macrolet ((get-area (area-type)
+             (let ((cname (symbolicate 'gtk-tree-view-get- area-type '-area))
+                   (lname (symbolicate area-type '-area)))
+             `(progn
+                (defcfun ,cname :void
+                  (tree-view pobject) (path tree-path) (column pobject)
+                  (rect (struct rectangle :out t)))
+                (defgeneric ,lname
+                    (tree-view path column)
+                  (:method ((tree-view tree-view) path column)
+                    (let ((res (make-instance 'rectangle)))
+                      (,cname tree-view path column res)
+                      res)))))))
+  (get-area background)
+  (get-area cell))
+
+(defcfun gtk-tree-view-get-visible-rect :void
+  (tree-view pobject) (visible-rect (struct rectangle :out t)))
+
+(defgeneric visible-rect (tree-view)
+  (:method ((tree-view tree-view))
+    (let ((res (make-instance 'rectangle)))
+      (gtk-tree-view-get-visible-rect tree-view res)
+      res)))
+
+(defcfun gtk-tree-view-get-visible-range :void
+  (tree-view pobject) (start-path :pointer) (end-path :pointer))
+
+(defgeneric visible-range (tree-view)
+  (:method ((tree-view tree-view))
+    (with-foreign-outs-list ((start-path 'tree-path) (end-path 'tree-path))
+        :ignore
+      (gtk-tree-view-get-visible-range tree-view start-path end-path))))
+
+(macrolet ((def-coords (from to)
+             (flet ((name-coord (sym1 sym2)
+                      (symbolicate (aref (symbol-name sym1) 0) sym2)))
+               (let ((cfun (symbolicate 'gtk-tree-view-convert- from 
+                                        '-to- to '-coords))
+                     (lfun (symbolicate 'convert- from '-to- to))
+                     (from-x (name-coord from 'x))
+                     (from-y (name-coord from 'y))
+                     (to-x (name-coord to 'x))
+                     (to-y (name-coord to 'y)))
+                 `(progn 
+                    (defcfun ,cfun :void 
+                      (tree-view pobject) 
+                      (,from-x :int) (,from-y :int) 
+                      (,to-x :pointer) (,to-y :pointer))
+                    (defgeneric ,lfun (tree-view x y)
+                      (:method ((tree-view tree-view) x y)
+                        (with-foreign-outs-list ((,to-x :int) (,to-y :int)) 
+                            :ignore
+                            (,cfun tree-view x y ,to-x ,to-y)))))))))
+  (def-coords bin-window tree)
+  (def-coords bin-window widget)
+  (def-coords tree bin-window)
+  (def-coords tree widget)
+  (def-coords widget bin-window)
+  (def-coords widget tree))
+                 
 
 (init-slots tree-view (on-select)
   (when on-select
--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/widget.lisp	2012/10/07 12:02:11	1.17
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/widget.lisp	2012/12/24 16:32:05	1.18
@@ -169,9 +169,9 @@
                       (accel-mods modifier-type))
   (list-accel-closures g-list)
   (can-activate-accel :boolean (signal-id :uint))   
-  ((widget-event . event) :boolean (event event))
-  (send-expose :int (event event))
-  (send-focus-change :boolean (event event))
+  ((widget-event . event) :boolean (event (:pointer (:union event))))
+  (send-expose :int (event (:pointer (:union event))))
+  (send-focus-change :boolean (event (:pointer (:union event))))
   (reparent :void (new-parent pobject))
   (is-focus :boolean)
   (grab-focus :void)
@@ -245,10 +245,11 @@
 (defcfun gtk-widget-get-allocation :void 
   (widget pobject) (allocation (struct allocation :out t)))
 
-(defmethod allocation ((widget widget))
-  (let ((res (make-instance 'allocation)))
-    (gtk-widget-get-allocation widget res)
-    res))
+(defgeneric allocation (widget)
+  (:method  ((widget widget))
+    (let ((res (make-instance 'allocation)))
+      (gtk-widget-get-allocation widget res)
+      res)))
 
 (setf (documentation 'clipboard 'function) 
       "SELECTION should be :PRIMARY or :CLIPOARD")
@@ -279,11 +280,10 @@
   (context :pointer) (gdk-window pobject))
 
 (defgeneric cairo-should-draw-window (window &optional context)
-  (:documentation "WINDOW may be GdkWindow or GtkWidget"))
-(defmethod cairo-should-draw-window (window 
-                                     &optional (context cl-cairo2:*context*))
-  (cl-cairo2::with-context-pointer (context cntx-pointer)
-      (gtk-cairo-should-draw-window cntx-pointer window)))
+  (:documentation "WINDOW may be GdkWindow or GtkWidget")
+  (:method (window &optional (context cl-cairo2:*context*))
+    (cl-cairo2::with-context-pointer (context cntx-pointer)
+      (gtk-cairo-should-draw-window cntx-pointer window))))
 
 (defmethod cairo-should-draw-window ((widget widget)
                                      &optional (context cl-cairo2:*context*))
@@ -306,42 +306,42 @@
 (defcfun gtk-widget-unset-state-flags :void 
   (widget pobject) (flags state-flags))
 
-(defgeneric (setf state-flags) (value widget &key type))
-(defmethod (setf state-flags) (value (widget widget) &key type)
-  "If TYPE = :SET, only set bits, :UNSET -- unset bits, 
+(defgeneric (setf state-flags) (value widget &key type)
+  (:method (value (widget widget) &key type)
+    "If TYPE = :SET, only set bits, :UNSET -- unset bits, 
 otherwise set state = VALUE"
-  (case type
-    (:set (gtk-widget-set-state-flags widget value nil))
-    (:unset (gtk-widget-unset-state-flags widget value))
-    (t (gtk-widget-set-state-flags widget value t))))
+    (case type
+      (:set (gtk-widget-set-state-flags widget value nil))
+      (:unset (gtk-widget-unset-state-flags widget value))
+      (t (gtk-widget-set-state-flags widget value t)))))
 
 (defcfun gtk-widget-get-preferred-height :void 
   (widget pobject) (minimum :pointer) (natural :pointer))
 (defcfun gtk-widget-get-preferred-height-for-width :void 
   (widget pobject) (width :int) (minimum :pointer) (natural :pointer))
 
-(defgeneric preferred-height (widget &key for-width))
-(defmethod preferred-height ((widget widget) &key for-width)
-  "Returns (values minimum natural)"
-  (with-foreign-outs ((minimum :int) (natural :int)) :ignore
-    (if for-width
-        (gtk-widget-get-preferred-height-for-width widget
-                                                   for-width minimum natural)
-        (gtk-widget-get-preferred-height widget minimum natural))))
+(defgeneric preferred-height (widget &key for-width)
+  (:method ((widget widget) &key for-width)
+    "Returns (values minimum natural)"
+    (with-foreign-outs ((minimum :int) (natural :int)) :ignore
+      (if for-width
+          (gtk-widget-get-preferred-height-for-width widget
+                                                     for-width minimum natural)
+          (gtk-widget-get-preferred-height widget minimum natural)))))
 
 (defcfun gtk-widget-get-preferred-width :void 
   (widget pobject) (minimum :pointer) (natural :pointer))
 (defcfun gtk-widget-get-preferred-width-for-height :void 
   (widget pobject) (height :int) (minimum :pointer) (natural :pointer))
 
-(defgeneric preferred-width (widget &key for-height))
-(defmethod preferred-width ((widget widget) &key for-height)
-  "Returns (values minimum natural)"
-  (with-foreign-outs ((minimum :int) (natural :int)) :ignore
-    (if for-height
-        (gtk-widget-get-preferred-width-for-height widget 
-                                                   for-height minimum natural)
-        (gtk-widget-get-preferred-width widget minimum natural))))
+(defgeneric preferred-width (widget &key for-height)
+  (:method ((widget widget) &key for-height)
+    "Returns (values minimum natural)"
+    (with-foreign-outs ((minimum :int) (natural :int)) :ignore
+      (if for-height
+          (gtk-widget-get-preferred-width-for-height widget 
+                                                     for-height minimum natural)
+          (gtk-widget-get-preferred-width widget minimum natural)))))
 
 (defcenum size-request-mode
   :height-for-width :width-for-height)
@@ -349,40 +349,43 @@
 (defgtkgetter request-mode size-request-mode widget)
 
 (defcfun gtk-widget-get-preferred-size :void
-  (widget pobject) (minimum :pointer) (natural :pointer))
+  (widget pobject) 
+  (minimum (struct requisition :out t))
+  (natural (struct requisition :out t)))
 
 (defgeneric preferred-size (widget)
   (:method ((widget widget))
     "Returns (values minimum natural).
 Minimum and natural are requisition objects."
-    (with-foreign-outs ((minimum 'requisition) (natural 'requisition))
-        :ignore
-      (gtk-widget-get-preferred-size widget minimum natural))))
+    (let ((minimum (make-instance 'requisition))
+          (natural (make-instance 'requisition)))
+      (gtk-widget-get-preferred-size widget minimum natural)
+      (values minimum natural))))
 
-(defcstruct requested-size
+(defcstruct* requested-size
   "GtkRequestedSize"
   (data pobject)
   (minimum-size :int)
   (natural-size :int))
 
 (defcfun gtk-distribute-natural-allocation :int
-  (extra-space :int) (n-requested-sizes :int) (sizes :pointer))
+  (extra-space :int) (n-requested-sizes :int) 
+  (sizes (carray (struct requested-size))))
 
 (defun distribute-natural-allocation (extra-space sizes)
   "EXTRA-SPACE -- integer, extra space to redistribute among children.
 SIZES -- {(widget minimum-size natural-size)}*"
-  (let ((length (length sizes)))
-    (let ((sizes-struct (foreign-alloc 'requested-size :count length)))
-      (iter
-        (for i from 0 below length)
-        (for x in sizes)
-        (let ((el (mem-aref sizes-struct 'requested-size i)))
-          (with-foreign-slots ((data minimum-size natural-size) 
-                               el requested-size)
-            (setf data (first x)
-                  minimum-size (second x)
-                  natural-size (third x)))))
-      (gtk-distribute-natural-allocation extra-space length sizes-struct))))
+  (let ((sizes-struct
+         (mapcar (lambda (size)
+                   (destructuring-bind (widget minimum-size natural-size) size
+                     (let ((res (make-instance 'requested-size)))
+                       (setf (data res) widget
+                             (minimum-size res) minimum-size
+                             (natural-size res) natural-size)
+                       res)))
+                 sizes)))
+    (gtk-distribute-natural-allocation extra-space (length sizes) 
+                                       sizes-struct)))
 
 (template (name with-type) ((color t)
                             (font nil)

--- /project/gtk-cffi/cvsroot/gtk-cffi/gtk/drag-drop.lisp	2012/12/24 16:32:06	NONE
+++ /project/gtk-cffi/cvsroot/gtk-cffi/gtk/drag-drop.lisp	2012/12/24 16:32:06	1.1
(in-package :gtk-cffi)

(defbitfield dest-defaults :motion :highlight :drop (:all #x7))

(defcfun gtk-drag-dest-set :void (widget pobject)
 (targets (carray (struct target-entry))) (n-targets :int) (action drag-action))

(defun drag-dest-set (widget targets action)
  (gtk-drag-dest-set widget targets (length targets) action))




More information about the gtk-cffi-cvs mailing list