com gtk/php-gtk: Rudimentary support for static GTK/GDK calls. This will probably get a hefty rethink after some sleep.: ext/libglade/libglade.overrides

[email protected] (David Soria Parra) Tue, 25 Oct 2005 02:43:02 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    b6c03b8f3e642ce895cddd64e330f96f5a08e8a8
Author:    Steph Fox <[email protected]>         Tue, 25 Oct 2005 02:43:02 +0000
Parents:   0bdd12e964a45b6c4090caa6559d197ea764faa7
Branches:  master

Link:       http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=b6c03b8f3e642ce895cddd64e330f96f5a08e8a8

Log:
Rudimentary support for static GTK/GDK calls.
This will probably get a hefty rethink after some sleep.

Changed paths:
  M  ext/libglade/libglade.overrides


Diff:
b6c03b8f3e642ce895cddd64e330f96f5a08e8a8
diff --git a/ext/libglade/libglade.overrides b/ext/libglade/libglade.overrides
index 4f37a7d..deacb23 100644
--- a/ext/libglade/libglade.overrides
+++ b/ext/libglade/libglade.overrides
@@ -146,11 +146,12 @@ static void glade_auto_signal_marshal(const gchar *handler_name, GObject *object
     zval *callback = NULL, *hash = NULL, ***args = NULL;
     zval *php_object = NULL, *php_connect_object = NULL;
     GClosure *closure = NULL;
-    int handler_id, n_args = 0, len = 0;
+    int handler_id, n_args = 0, len = 0, gtk_flag = 0;
     char *php_class = NULL, *php_method = NULL;
     TSRMLS_FETCH();
 
     MAKE_STD_ZVAL(callback);
+
     if (strstr(handler_name, "::")) {
         len = strcspn(handler_name, ":");
         php_class = safe_estrndup(handler_name, len);
@@ -158,6 +159,11 @@ static void glade_auto_signal_marshal(const gchar *handler_name, GObject *object
         array_init(callback);
         add_next_index_string(callback, php_class, 1);
         add_next_index_string(callback, php_method, 1);
+
+        if (strcmp(php_class, "gtk") == 0 || strcmp(php_class, "gdk") == 0) {
+            gtk_flag = 1;
+        }
+
         efree(php_class);
     } else {
         ZVAL_STRING(callback, (char *)handler_name, 1);
@@ -169,13 +175,15 @@ static void glade_auto_signal_marshal(const gchar *handler_name, GObject *object
         return;
     }
 
-    if (connect_object) {
-        phpg_gobject_new(&php_connect_object, (GObject*)connect_object TSRMLS_CC);
-        args = php_gtk_hash_as_array_offset(data, 1, &n_args);
-        args[0] = &php_connect_object;
-        hash = php_gtk_array_as_hash(args, n_args, 0, n_args);
+    if (connect_object || gtk_flag) {
+        if (connect_object) {
+            phpg_gobject_new(&php_connect_object, (GObject*)connect_object TSRMLS_CC);
+            args = php_gtk_hash_as_array_offset(data, 1, &n_args);
+            args[0] = &php_connect_object;
+            hash = php_gtk_array_as_hash(args, n_args, 0, n_args);
+            efree(args);
+        }
         closure = phpg_closure_new(callback, hash, PHPG_CONNECT_OBJECT TSRMLS_CC);
-        efree(args);
     } else {
         closure = phpg_closure_new(callback, data, PHPG_CONNECT_NORMAL TSRMLS_CC);
     }