That GtkTreePath-as-boxed patch

From: Date: Wed, 02 Nov 2005 21:10:12 +0000
Subject: That GtkTreePath-as-boxed patch
Groups: php.gtk.dev 
Request: Send a blank email to php-gtk-dev+get-2036@lists.php.net to get a copy of this message
Andrei, hi, This is a much smaller patch now. Please review when you get a minute? - Steph

Index: ext/gtk+/gtk-types.defs =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gtk-types.defs,v retrieving revision 1.3 diff -u -r1.3 gtk-types.defs --- ext/gtk+/gtk-types.defs 4 Apr 2005 04:07:30 -0000 1.3 +++ ext/gtk+/gtk-types.defs 2 Nov 2005 20:57:33 -0000 @@ -108,6 +108,14 @@ (release-func "gtk_tree_iter_free") ) +(define-boxed TreePath + (in-module "Gtk") + (c-name "GtkTreePath") + (gtype-id "GTK_TYPE_TREE_PATH") + (copy-func "gtk_tree_path_copy") + (release-func "gtk_tree_path_free") +) + (define-boxed TreeRowReference (in-module "Gtk") (c-name "GtkTreeRowReference") Index: ext/gtk+/gtktreeview.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gtktreeview.overrides,v retrieving revision 1.22 diff -u -r1.22 gtktreeview.overrides --- ext/gtk+/gtktreeview.overrides 2 Nov 2005 20:31:32 -0000 1.22 +++ ext/gtk+/gtktreeview.overrides 2 Nov 2005 21:01:23 -0000 @@ -9,9 +9,6 @@ %% {{{ ignores %% -ignore-glob - gtk_tree_path_* -%% ignore gtk_cell_renderer_get_size gtk_list_store_newv @@ -457,22 +454,28 @@ zval *php_path = NULL; GtkTreeIter iter; GtkTreePath *path; + zend_bool is_obj = 0; NOT_STATIC_METHOD(); if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path)) return; - if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) { - php_error(E_WARNING, "%s::%s() expects path argument to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); - return; + if (php_path && IS_OBJECT == Z_TYPE_P(php_path)) { + path = (GtkTreePath *) PHPG_GBOXED(php_path); + is_obj = 1; + } else { + if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) { + php_error(E_WARNING, "%s::%s() expects path argument to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); + return; + } } if (gtk_tree_model_get_iter(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, path)) { - gtk_tree_path_free(path); + if (!is_obj) gtk_tree_path_free(path); phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC); } else { - gtk_tree_path_free(path); + if (!is_obj) gtk_tree_path_free(path); php_error(E_WARNING, "%s::%s(): invalid tree path", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C)); } }
« previous php.gtk.dev (#2036) next »