diff -ur cvs/ext/gtk+/gtk-2.10.overrides cvsbob/ext/gtk+/gtk-2.10.overrides --- cvs/ext/gtk+/gtk-2.10.overrides 2007-11-06 14:58:54.000000000 -0500 +++ cvsbob/ext/gtk+/gtk-2.10.overrides 2007-11-06 15:22:19.000000000 -0500 @@ -151,23 +151,34 @@ override gtk_recent_manager_get_items PHP_METHOD { - GtkRecentInfo *info; - GList *items; - guint count, i; - zval *php_info = NULL; + GList *list = NULL, *element = NULL; + zval *current = NULL; NOT_STATIC_METHOD(); - items = gtk_recent_manager_get_items(GTK_RECENT_MANAGER(PHPG_GOBJECT(this_ptr))); - count = g_list_length(items); + if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"")) { + return; + } + + list = gtk_recent_manager_get_items(GTK_RECENT_MANAGER(PHPG_GOBJECT(this_ptr))); + array_init(return_value); - for (i = 0; i < count; i++) { - info = g_list_nth_data(items, i); - phpg_gboxed_new(&php_info, GTK_TYPE_RECENT_INFO, &info, TRUE, TRUE TSRMLS_CC); - add_next_index_zval(return_value, php_info); + + for(element = list; element; element = element->next) { + MAKE_STD_ZVAL(current); + phpg_gboxed_new( + ¤t, + GTK_TYPE_RECENT_INFO, + element->data, + TRUE, + TRUE TSRMLS_CC + ); + + add_next_index_zval(return_value,current); } - g_list_foreach(items, (GFunc) gtk_recent_info_unref, NULL); - g_list_free(items); + + g_list_foreach(list,(GFunc)gtk_recent_info_unref,NULL); + g_list_free(list); } %% }}} @@ -376,6 +387,97 @@ ); } +%% +override gtk_recent_chooser_get_items +PHP_METHOD +{ + GList *list = NULL, *element = NULL; + zval *current = NULL; + + NOT_STATIC_METHOD(); + + if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"")) { + return; + } + + list = gtk_recent_chooser_get_items(GTK_RECENT_CHOOSER(PHPG_GOBJECT(this_ptr))); + + array_init(return_value); + + for(element = list; element; element = element->next) { + MAKE_STD_ZVAL(current); + phpg_gboxed_new( + ¤t, + GTK_TYPE_RECENT_INFO, + element->data, + TRUE, + TRUE TSRMLS_CC + ); + + add_next_index_zval(return_value,current); + } + + g_list_foreach(list,(GFunc)gtk_recent_info_unref,NULL); + g_list_free(list); +} + +%% +override gtk_recent_chooser_get_uris +PHP_METHOD +{ + gchar **list; + gsize size, iter; + + NOT_STATIC_METHOD(); + + if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"")) { + return; + } + + list = gtk_recent_chooser_get_uris( + GTK_RECENT_CHOOSER(PHPG_GOBJECT(this_ptr)), + &size + ); + + array_init(return_value); + + iter = 0; + while(iter < size) { + add_next_index_string(return_value,list[iter++],1); + } + + g_strfreev(list); +} + +%% +override gtk_recent_chooser_list_filters +PHP_METHOD +{ + GSList *list, *element; + zval *current; + + NOT_STATIC_METHOD(); + + if(!php_gtk_parse_args(ZEND_NUM_ARGS(),"")) { + return; + } + + list = gtk_recent_chooser_list_filters( + GTK_RECENT_CHOOSER(PHPG_GOBJECT(this_ptr)) + ); + + array_init(return_value); + + for(element = list; element; element = element->next) { + MAKE_STD_ZVAL(current); + phpg_gobject_new(¤t,element->data); + add_next_index_zval(return_value,current); + } + + g_slist_free(list); +} + + %% }}} %% {{{ GtkRecentChooserDialog