cvs: php-gtk /generator gtk.defs gtk.overrides libglade.overrides /src php_gtk_object.c
| From: | Andrei Zmievski | Date: | Fri, 16 Mar 2001 04:18:14 +0000 |
| Subject: | cvs: php-gtk /generator gtk.defs gtk.overrides libglade.overrides /src php_gtk_object.c | ||
| Groups: | php.gtk | ||
| Request: | Send a blank email to php-gtk+get-951@lists.php.net to get a copy of this message | ||
andrei Thu Mar 15 20:18:14 2001 EDT
Modified files:
/php-gtk/generator gtk.defs gtk.overrides libglade.overrides
/php-gtk/src php_gtk_object.c
Log:
* Added GtkList->selection property.
* Fixed a crash in GladeXML::signal_connect() when passing extra arguments.
* Fixed cascading property access on objects.
Index: php-gtk/generator/gtk.defs
diff -u php-gtk/generator/gtk.defs:1.9 php-gtk/generator/gtk.defs:1.10
--- php-gtk/generator/gtk.defs:1.9 Wed Mar 14 13:36:04 2001
+++ php-gtk/generator/gtk.defs Thu Mar 15 20:18:14 2001
@@ -310,6 +310,7 @@
(in-module Gtk)
(parent Container (Gtk))
(c-name GtkList)
+ (field (type-and-name GList* selection))
)
(object Layout
Index: php-gtk/generator/gtk.overrides
diff -u php-gtk/generator/gtk.overrides:1.35 php-gtk/generator/gtk.overrides:1.36
--- php-gtk/generator/gtk.overrides:1.35 Wed Mar 14 12:51:34 2001
+++ php-gtk/generator/gtk.overrides Thu Mar 15 20:18:14 2001
@@ -1061,6 +1061,7 @@
add_property_bool(return_value, "expand", box_child->expand);
add_property_bool(return_value, "fill", box_child->fill);
add_property_long(return_value, "pack", box_child->pack);
+ return;
}
}
}
@@ -1141,6 +1142,7 @@
add_property_zval(return_value, "widget", php_gtk_new((GtkObject
*)fixed_child->widget));
add_property_long(return_value, "x", fixed_child->x);
add_property_long(return_value, "y", fixed_child->y);
+ return;
}
}
}
@@ -1160,4 +1162,34 @@
}
return;
+%%
+getprop GtkList selection
+ GtkListItem *item;
+ zval *php_item;
+ GList *tmp;
+ GList *selection = GTK_LIST(PHP_GTK_GET(object))->selection;
+ zend_overloaded_element *property;
+ zend_llist_element *next = (*element)->next;
+ int prop_index;
+ if (next) {
+ int i = 0;
+ property = (zend_overloaded_element *)next->data;
+ if (Z_TYPE_P(property) == OE_IS_ARRAY && Z_TYPE(property->element) == IS_LONG) {
+ *element = next;
+ prop_index = Z_LVAL(property->element);
+ for (tmp = selection, i = 0; tmp; tmp = tmp->next, i++) {
+ if (i == prop_index) {
+ *return_value = *php_gtk_new((GtkObject *)tmp->data);
+ return;
+ }
+ }
+ }
+ } else {
+ array_init(return_value);
+ for (tmp = selection; tmp; tmp = tmp->next)
+ add_next_index_zval(return_value, php_gtk_new((GtkObject *)tmp->data));
+ }
+
+ return;
+%%
Index: php-gtk/generator/libglade.overrides
diff -u php-gtk/generator/libglade.overrides:1.1 php-gtk/generator/libglade.overrides:1.2
--- php-gtk/generator/libglade.overrides:1.1 Mon Mar 12 21:52:38 2001
+++ php-gtk/generator/libglade.overrides Thu Mar 15 20:18:14 2001
@@ -24,9 +24,9 @@
zend_hash_index_find(Z_ARRVAL_P(callback_data), 0, (void **)&callback);
zend_hash_index_find(Z_ARRVAL_P(callback_data), 1, (void **)&extra);
- zend_hash_index_find(Z_ARRVAL_P(callback_data), 1, (void **)&pass_object);
- zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void **)&callback_filename);
- zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)&callback_lineno);
+ zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void **)&pass_object);
+ zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)&callback_filename);
+ zend_hash_index_find(Z_ARRVAL_P(callback_data), 4, (void **)&callback_lineno);
if (connect_object) {
zval *temp;
Index: php-gtk/src/php_gtk_object.c
diff -u php-gtk/src/php_gtk_object.c:1.20 php-gtk/src/php_gtk_object.c:1.21
--- php-gtk/src/php_gtk_object.c:1.20 Mon Mar 12 21:52:38 2001
+++ php-gtk/src/php_gtk_object.c Thu Mar 15 20:18:14 2001
@@ -18,7 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: php_gtk_object.c,v 1.20 2001/03/13 05:52:38 andrei Exp $ */
+/* $Id: php_gtk_object.c,v 1.21 2001/03/16 04:18:14 andrei Exp $ */
#include "php_gtk.h"
@@ -611,30 +611,31 @@
zval result;
zend_overloaded_element *overloaded_property;
zend_llist_element *element;
- zval *object = property_reference->object;
+ zval object = *property_reference->object;
prop_getter_t *getter;
zend_class_entry *ce;
- int found = FAILURE;
+ int found;
for (element=property_reference->elements_list->head; element; element=element->next) {
overloaded_property = (zend_overloaded_element *) element->data;
if ((Z_TYPE_P(overloaded_property) != OE_IS_OBJECT ||
Z_TYPE(overloaded_property->element) != IS_STRING) ||
- Z_TYPE_P(object) != IS_OBJECT) {
+ Z_TYPE(object) != IS_OBJECT) {
convert_to_null(&result);
return result;
}
- for (ce = Z_OBJCE_P(object); ce != NULL && found != SUCCESS; ce = ce->parent) {
+ found = FAILURE;
+ for (ce = Z_OBJCE(object); ce != NULL && found != SUCCESS; ce = ce->parent) {
if (zend_hash_index_find(&php_gtk_prop_getters, (long)ce, (void **)&getter) == SUCCESS)
{
- (*getter)(&result, object, &element, &found);
+ (*getter)(&result, &object, &element, &found);
}
}
if (found == FAILURE) {
convert_to_null(&result);
return result;
}
- object = &result;
+ object = result;
zval_dtor(&overloaded_property->element);
}
@@ -652,7 +653,7 @@
prop_getter_t *getter;
prop_setter_t *setter;
zend_class_entry *ce;
- int retval, found = FAILURE;
+ int retval, found;
/*
* We want to stop at the last overloaded object reference - the rest can
@@ -670,6 +671,7 @@
return FAILURE;
}
+ found = FAILURE;
for (ce = Z_OBJCE_P(object); ce != NULL && found != SUCCESS; ce = ce->parent) {
if (zend_hash_index_find(&php_gtk_prop_getters, (long)ce, (void **)&getter) == SUCCESS)
{
(*getter)(&result, object, &element, &found);
@@ -677,7 +679,7 @@
}
if (found == FAILURE)
return FAILURE;
- object = &result;
+ *object = result;
zval_dtor(&overloaded_property->element);
}
@@ -703,7 +705,7 @@
zval *object = property_reference->object;
prop_getter_t *getter;
zend_class_entry *ce;
- int found = FAILURE;
+ int found;
/*
* We want to stop at the last overloaded object reference - the rest can
@@ -724,6 +726,7 @@
return;
}
+ found = FAILURE;
for (ce = Z_OBJCE_P(object); ce != NULL && found != SUCCESS; ce = ce->parent) {
if (zend_hash_index_find(&php_gtk_prop_getters, (long)ce, (void **)&getter) == SUCCESS)
{
(*getter)(&result, object, &element, &found);
@@ -733,7 +736,7 @@
php_error(E_WARNING, "Error invoking method '%s' on property
'%s'", Z_STRVAL(method_name), Z_STRVAL(overloaded_property->element));
return;
}
- object = &result;
+ *object = result;
zval_dtor(&overloaded_property->element);
}