chiark / gitweb /
gffi/basic-types.lisp: clisp already defines a `byte' type'.
[clg] / gtk / gtktree.lisp
index 5a7f8320fc708675ba4eb2a21fdbfabb0d001079..d884dd0501e08082e4dec6485ff142192fc00cf1 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: gtktree.lisp,v 1.31 2007-10-17 14:47:10 espen Exp $
+;; $Id: gtktree.lisp,v 1.34 2008-04-11 20:53:32 espen Exp $
 
 
 (in-package "GTK")
@@ -348,7 +348,8 @@ (define-type-method destroy-function ((type tree-path) &key temp inlined)
 
 (defun ensure-tree-path (path)
   (etypecase path
-    (string (coerce (clg-utils:split-string path :delimiter #\:) 'vector))
+    (string (map 'vector #'parse-integer
+                (clg-utils:split-string path :delimiter #\:)))
     (vector path)))
 
 
@@ -369,7 +370,7 @@ (defbinding %tree-row-reference-new () pointer
 (defmethod allocate-foreign ((reference tree-row-reference) &key model path)
   (%tree-row-reference-new model path))
 
-(defbinding tree-row-reference-get-path () tree-path
+(defbinding tree-row-reference-get-path () (or null tree-path)
   (reference tree-row-reference))
 
 (defbinding (tree-row-reference-valid-p "gtk_tree_row_reference_valid") () boolean
@@ -383,8 +384,9 @@ (defbinding tree-model-get-column-type () gtype
 (defbinding tree-model-get-iter (model path &optional (iter (make-instance 'tree-iter))) boolean
   (model tree-model)
   (iter tree-iter :in/return)
-  (path tree-path))
+  ((ensure-tree-path path) tree-path))
 
+#?(pkg-exists-p "gtk+-2.0" :atleast-version "2.12.0")
 (defmethod allocate-foreign ((tree-iter tree-iter) &rest initargs)
   (declare (ignore initargs))
   (let ((size (foreign-size (class-of tree-iter))))
@@ -393,7 +395,7 @@ (defmethod allocate-foreign ((tree-iter tree-iter) &rest initargs)
 (defun ensure-tree-iter (model row)
   (etypecase row
     (tree-iter row)
-    (tree-path 
+    ((or tree-path string)
      (multiple-value-bind (valid-p iter) (tree-model-get-iter model row)
        (if valid-p
           iter
@@ -574,15 +576,15 @@ (defbinding %tree-selection-path-is-selected () boolean
 
 (defbinding %tree-selection-select-iter () nil
   (tree-selection tree-selection)
-  (tree-path tree-path))
+  (tree-iter tree-iter))
 
 (defbinding %tree-selection-unselect-iter () nil
   (tree-selection tree-selection)
-  (tree-path tree-path))
+  (tree-iter tree-iter))
 
 (defbinding %tree-selection-iter-is-selected () boolean
   (tree-selection tree-selection)
-  (tree-path tree-path))
+  (tree-iter tree-iter))
 
 (defun tree-selection-select (selection row)
   (etypecase row
@@ -846,6 +848,7 @@ (defbinding tree-view-move-column-after () nil
   (column tree-view-column)
   (base-column (or null tree-view-column)))
 
+#+(or)
 (define-callback-setter tree-view-set-column-drag-function tree-view boolean
   (column tree-view-column) 
   (prev tree-view-column)