[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-gtk-cvs
Subject:    [php-gtk-cvs] cvs: php-gtk / php_gtk.m4  /ext/gtk+ Makefile.frag gtk.defs gtk.overrides gtkclipboard
From:       "Andrei Zmievski" <andrei () php ! net>
Date:       2006-09-17 20:56:27
Message-ID: cvsandrei1158526587 () cvsserver
[Download RAW message or body]

andrei		Sun Sep 17 20:56:27 2006 UTC

  Added files:                 
    /php-gtk/ext/gtk+	gtkclipboard.overrides 

  Modified files:              
    /php-gtk	php_gtk.m4 
    /php-gtk/ext/gtk+	Makefile.frag gtk.defs gtk.overrides php_gdk.c 
                     	php_gtk+.c 
    /php-gtk/generator	arg_types.php generator.php templates.php 
  Log:
  Some clipboard support.
  
  
["andrei-20060917205627.txt" (text/plain)]

http://cvs.php.net/viewvc.cgi/php-gtk/php_gtk.m4?r1=1.27&r2=1.28&diff_format=u
Index: php-gtk/php_gtk.m4
diff -u php-gtk/php_gtk.m4:1.27 php-gtk/php_gtk.m4:1.28
--- php-gtk/php_gtk.m4:1.27	Sat Jun 10 19:53:12 2006
+++ php-gtk/php_gtk.m4	Sun Sep 17 20:56:27 2006
@@ -562,3 +562,4 @@
 AC_ARG_WITH($1,[$3],$5=[$]withval,$5=ifelse($4,,no,$4))
 PHP_GTK_ARG_ANALYZE($5)
 ])
+
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/Makefile.frag?r1=1.20&r2=1.21&diff_format=u
                
Index: php-gtk/ext/gtk+/Makefile.frag
diff -u php-gtk/ext/gtk+/Makefile.frag:1.20 php-gtk/ext/gtk+/Makefile.frag:1.21
--- php-gtk/ext/gtk+/Makefile.frag:1.20	Sat Feb  4 21:46:18 2006
+++ php-gtk/ext/gtk+/Makefile.frag	Sun Sep 17 20:56:27 2006
@@ -4,6 +4,7 @@
 
 GTK_OVERRIDES = \
 	$(srcdir)/gtk.overrides \
+	$(srcdir)/gtkclipboard.overrides \
 	$(srcdir)/gtkcontainer.overrides \
 	$(srcdir)/gtkstyle.overrides \
 	$(srcdir)/gtktextview.overrides \
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gtk.defs?r1=1.48&r2=1.49&diff_format=u
Index: php-gtk/ext/gtk+/gtk.defs
diff -u php-gtk/ext/gtk+/gtk.defs:1.48 php-gtk/ext/gtk+/gtk.defs:1.49
--- php-gtk/ext/gtk+/gtk.defs:1.48	Mon Jul 10 20:48:59 2006
+++ php-gtk/ext/gtk+/gtk.defs	Sun Sep 17 20:56:27 2006
@@ -2370,8 +2370,8 @@
 (define-function clipboard_get_for_display
   (is-constructor-of "GtkClipboard")
   (c-name "gtk_clipboard_get_for_display")
-  (caller-owns-return #t)
   (return-type "GtkClipboard*")
+  (caller-owns-return #f)
   (parameters
     '("GdkDisplay*" "display" (default "gdk_display_get_default()"))
     '("GdkAtom" "selection" (default "GDK_SELECTION_CLIPBOARD"))
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gtk.overrides?r1=1.210&r2=1.211&diff_format=u
                
Index: php-gtk/ext/gtk+/gtk.overrides
diff -u php-gtk/ext/gtk+/gtk.overrides:1.210 php-gtk/ext/gtk+/gtk.overrides:1.211
--- php-gtk/ext/gtk+/gtk.overrides:1.210	Sat Sep  9 17:58:57 2006
+++ php-gtk/ext/gtk+/gtk.overrides	Sun Sep 17 20:56:27 2006
@@ -5009,6 +5009,7 @@
 
 %% }}}
 
+%% include gtkclipboard.overrides
 %% include gtkcontainer.overrides
 %% include gtkdrag.overrides
 %% include gtkstyle.overrides
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/php_gdk.c?r1=1.7&r2=1.8&diff_format=u
Index: php-gtk/ext/gtk+/php_gdk.c
diff -u php-gtk/ext/gtk+/php_gdk.c:1.7 php-gtk/ext/gtk+/php_gdk.c:1.8
--- php-gtk/ext/gtk+/php_gdk.c:1.7	Fri Apr 14 16:55:31 2006
+++ php-gtk/ext/gtk+/php_gdk.c	Sun Sep 17 20:56:27 2006
@@ -18,7 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  
-/* $Id: php_gdk.c,v 1.7 2006/04/14 16:55:31 sfox Exp $: */
+/* $Id: php_gdk.c,v 1.8 2006/09/17 20:56:27 andrei Exp $: */
 
 #include "php_gtk.h"
 #if HAVE_PHP_GTK
@@ -28,7 +28,7 @@
 
 extern zend_class_entry *gdk_ce;
 
-void php_gdk_register_keysyms()
+void phpg_gdk_register_keysyms()
 {
 	phpg_register_int_constant(gdk_ce, "KEY_VoidSymbol", sizeof("KEY_VoidSymbol")-1, \
GDK_VoidSymbol);  phpg_register_int_constant(gdk_ce, "KEY_BackSpace", \
sizeof("KEY_BackSpace")-1, GDK_BackSpace); \
http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/php_gtk+.c?r1=1.25&r2=1.26&diff_format=u
                
Index: php-gtk/ext/gtk+/php_gtk+.c
diff -u php-gtk/ext/gtk+/php_gtk+.c:1.25 php-gtk/ext/gtk+/php_gtk+.c:1.26
--- php-gtk/ext/gtk+/php_gtk+.c:1.25	Sat Feb 18 19:49:34 2006
+++ php-gtk/ext/gtk+/php_gtk+.c	Sun Sep 17 20:56:27 2006
@@ -18,7 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  
-/* $Id: php_gtk+.c,v 1.25 2006/02/18 19:49:34 andrei Exp $: */
+/* $Id: php_gtk+.c,v 1.26 2006/09/17 20:56:27 andrei Exp $: */
 
 #include "php_gtk.h"
 #include "SAPI.h"
@@ -30,9 +30,10 @@
 PHP_GTK_API int le_gtk_object;
 PHP_GTK_API zend_class_entry *php_gtk_exception_ce;
 extern zend_class_entry *gtk_ce;
+extern zend_class_entry *gdk_ce;
 
 /* defined in php_gdk.c */
-void php_gdk_register_keysyms();
+void phpg_gdk_register_keysyms();
 
 /* TODO check pygtk version */
 static void init_gtk(void)
@@ -144,7 +145,7 @@
 }
 */
 
-static void register_stock_constants()
+static void phpg_register_stock_constants()
 {
 	GSList *stock_ids, *item;
 	char buf[128];
@@ -174,6 +175,33 @@
 	g_slist_free(stock_ids);
 }
 
+#define register_atom(name) \
+	{ \
+		gchar *__atom_name = gdk_atom_name((GDK_##name)); \
+		phpg_register_string_constant(gdk_ce, #name, strlen(#name), __atom_name, \
strlen(__atom_name)); \ +		g_free(__atom_name); \
+	}
+static void phpg_register_atoms()
+{
+	register_atom(SELECTION_PRIMARY);
+    register_atom(SELECTION_SECONDARY);
+    register_atom(SELECTION_CLIPBOARD);
+    register_atom(TARGET_BITMAP);
+    register_atom(TARGET_COLORMAP);
+    register_atom(TARGET_DRAWABLE);
+    register_atom(TARGET_PIXMAP);
+    register_atom(TARGET_STRING);
+    register_atom(SELECTION_TYPE_ATOM);
+    register_atom(SELECTION_TYPE_BITMAP);
+    register_atom(SELECTION_TYPE_COLORMAP);
+    register_atom(SELECTION_TYPE_DRAWABLE);
+    register_atom(SELECTION_TYPE_INTEGER);
+    register_atom(SELECTION_TYPE_PIXMAP);
+    register_atom(SELECTION_TYPE_WINDOW);
+    register_atom(SELECTION_TYPE_STRING);
+}
+#undef register_atom
+
 PHP_GTK_XINIT_FUNCTION(gtk_plus)
 {
 	//register_exception(TSRMLS_C);
@@ -188,9 +216,10 @@
 	phpg_pango_register_constants("PANGO_");
 	phpg_gdk_register_constants("GDK_");
 	phpg_gtk_register_constants("GTK_");
-	register_stock_constants();
 
-	php_gdk_register_keysyms();
+	phpg_register_stock_constants();
+	phpg_gdk_register_keysyms();
+	phpg_register_atoms();
 
 	php_gtk_plus_register_types(TSRMLS_C);
 
http://cvs.php.net/viewvc.cgi/php-gtk/generator/arg_types.php?r1=1.82&r2=1.83&diff_format=u
                
Index: php-gtk/generator/arg_types.php
diff -u php-gtk/generator/arg_types.php:1.82 php-gtk/generator/arg_types.php:1.83
--- php-gtk/generator/arg_types.php:1.82	Sun Jul 30 19:17:54 2006
+++ php-gtk/generator/arg_types.php	Sun Sep 17 20:56:27 2006
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-/* $Id: arg_types.php,v 1.82 2006/07/30 19:17:54 andrei Exp $ */
+/* $Id: arg_types.php,v 1.83 2006/09/17 20:56:27 andrei Exp $ */
 
 /*======================================================================*\
     Function: convert_typename
@@ -748,7 +748,7 @@
                                                               'on_error' => \
$info->error_action));  }
         $info->arg_list[] = $name;
-        $info->add_parse_list('O', array('&php_' . $name, 'gdkatom_ce'));
+        $info->add_parse_list('V', '&php_' . $name);
     }
 
     function write_return($type, $owns_return, $info)
http://cvs.php.net/viewvc.cgi/php-gtk/generator/generator.php?r1=1.115&r2=1.116&diff_format=u
                
Index: php-gtk/generator/generator.php
diff -u php-gtk/generator/generator.php:1.115 php-gtk/generator/generator.php:1.116
--- php-gtk/generator/generator.php:1.115	Fri Jun 23 04:11:49 2006
+++ php-gtk/generator/generator.php	Sun Sep 17 20:56:27 2006
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-/* $Id: generator.php,v 1.115 2006/06/23 04:11:49 andrei Exp $ */
+/* $Id: generator.php,v 1.116 2006/09/17 20:56:27 andrei Exp $ */
 
 /*
  * Significant portions of this generator are based on the pygtk code generator
@@ -373,7 +373,7 @@
 
         if ($ctors) {
             $dict['class'] = $object->c_name;
-            $dict['typecode'] = $object->typecode;;
+            $dict['typecode'] = $object->typecode;
             $first = 1;
 
             foreach ($ctors as $ctor) {
@@ -382,6 +382,9 @@
                     $ctor_fe_name = '__construct';
                     $flags = 'ZEND_ACC_PUBLIC';
                     $template_name = 'constructor';
+                    if (!$ctor->caller_owns_return) {
+                        $dict['post_create_code'] = "\tg_object_ref(wrapped_obj);";
+                    }
                 } else {
                     // remove class name from the constructor name, i.e. turn
                     // gtk_button_new_with_mnemonic into new_with_mnemonic
@@ -1353,7 +1356,8 @@
                                  'float'          => 'double',
                                  'gfloat'         => 'double',
                                  
-                                 'GdkDrawable*'   => 'GdkWindow');
+                                 'GdkDrawable*'   => 'GdkWindow',
+                                 'GdkAtom'        => 'string');
         
         return isset($type_map[$in_type]);
     }//function is_php_type($in_type)
http://cvs.php.net/viewvc.cgi/php-gtk/generator/templates.php?r1=1.52&r2=1.53&diff_format=u
                
Index: php-gtk/generator/templates.php
diff -u php-gtk/generator/templates.php:1.52 php-gtk/generator/templates.php:1.53
--- php-gtk/generator/templates.php:1.52	Sun Jun 25 10:48:07 2006
+++ php-gtk/generator/templates.php	Sun Sep 17 20:56:27 2006
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-/* $Id: templates.php,v 1.52 2006/06/25 10:48:07 sfox Exp $ */
+/* $Id: templates.php,v 1.53 2006/09/17 20:56:27 andrei Exp $ */
 
 class Templates {
 const function_call = "%s(%s)";
@@ -62,6 +62,7 @@
 	if (!wrapped_obj) {
         PHPG_THROW_CONSTRUCT_EXCEPTION(%(class));
 	}
+%(post_create_code)
     phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
 }\n\n";
 

http://cvs.php.net/viewvc.cgi/php-gtk/ext/gtk+/gtkclipboard.overrides?view=markup&rev=1.1
                
Index: php-gtk/ext/gtk+/gtkclipboard.overrides
+++ php-gtk/ext/gtk+/gtkclipboard.overrides
/* vim: set et ft=cpp fdm=marker: */

/* TODO figure out why gtk_clipboard_finalize is not called */

%% {{{ ignores
%%
ignore
    gtk_clipboard_set_with_owner
%% }}}

%% {{{ gtk_clipboard_request_targets

%%
override gtk_clipboard_request_targets

static void phpg_clipboard_request_targets_marshal(GtkClipboard *clipboard,
                                                   GdkAtom *atoms,
                                                   gint n_atoms,
                                                   gpointer user_data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) user_data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    zval *php_atoms = NULL;
    gchar *name;
    int i;
    
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line \
%ld", callback_name, cbd->src_filename, cbd->src_lineno);  efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
    MAKE_STD_ZVAL(php_atoms);
    array_init(php_atoms);
    for (i = 0; i < n_atoms; i++) {
        name = gdk_atom_name(atoms[i]);
        add_next_index_string(php_atoms, name, 1);
        g_free(name);
    }

    args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
    args[0] = &php_clipboard;
    args[1] = &php_atoms;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, \
args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);
    zval_ptr_dtor(&php_atoms);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
    phpg_cb_data_destroy(cbd);
}

PHP_METHOD
{
    zval *callback, *extra;
    phpg_cb_data_t *cbd;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &callback))
		return;

    zval_add_ref(&callback);
    cbd = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_clipboard_request_targets(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)),
                                  phpg_clipboard_request_targets_marshal, cbd);
    RETURN_TRUE;
}

%% }}}

%% {{{ gtk_clipboard_request_text

%%
override gtk_clipboard_request_text

static void phpg_clipboard_request_text_marshal(GtkClipboard *clipboard,
                                                const gchar *text,
                                                gpointer user_data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) user_data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    zval *php_text = NULL;
    gchar *cp_str;
    gsize cp_len;
    zend_bool free_cp_str;
    
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line \
%ld", callback_name, cbd->src_filename, cbd->src_lineno);  efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
    MAKE_STD_ZVAL(php_text);
    if (text) {
        cp_str = phpg_from_utf8(text, strlen(text), &cp_len, &free_cp_str TSRMLS_CC);
        if (cp_str) {
            ZVAL_STRINGL(php_text, cp_str, cp_len, 1);
            if (free_cp_str) {
                g_free(cp_str);
            }
        } else {
            ZVAL_NULL(php_text);
        }
    } else {
        ZVAL_NULL(php_text);
    }

    args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
    args[0] = &php_clipboard;
    args[1] = &php_text;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, \
args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);
    zval_ptr_dtor(&php_text);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
    phpg_cb_data_destroy(cbd);
}

PHP_METHOD
{
    zval *callback, *extra;
    phpg_cb_data_t *cbd;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &callback))
		return;

    zval_add_ref(&callback);
    cbd = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_clipboard_request_text(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)),
                               phpg_clipboard_request_text_marshal, cbd);
    RETURN_TRUE;
}

%% }}}

%% {{{ gtk_clipboard_set_with_data

%%
override gtk_clipboard_set_with_data
typedef struct {
    phpg_cb_data_t *get_cb_data;
    phpg_cb_data_t *clear_cb_data;
} phpg_clipboard_set_info;

static void phpg_clipboard_get_func_marshal(GtkClipboard *clipboard,
                                            GtkSelectionData *selection_data,
                                            guint info,
                                            gpointer user_data)
{
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    zval *php_selection_data = NULL;
    zval *php_info = NULL;
    phpg_clipboard_set_info *set_info = (phpg_clipboard_set_info *) user_data;

    TSRMLS_FETCH();

    if (!zend_is_callable(set_info->get_cb_data->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line \
%ld", callback_name, set_info->get_cb_data->src_filename, \
set_info->get_cb_data->src_lineno);  efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
    phpg_gboxed_new(&php_selection_data, GTK_TYPE_SELECTION_DATA, selection_data, \
FALSE, FALSE TSRMLS_CC);  MAKE_STD_ZVAL(php_info);
    ZVAL_LONG(php_info, info);

    args = php_gtk_hash_as_array_offset(set_info->get_cb_data->user_args, 3, \
&n_args);  args[0] = &php_clipboard;
    args[1] = &php_selection_data;
    args[2] = &php_info;

    call_user_function_ex(EG(function_table), NULL, set_info->get_cb_data->callback, \
&retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);
    zval_ptr_dtor(&php_selection_data);
    zval_ptr_dtor(&php_info);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
}

static void phpg_clipboard_clear_func_marshal(GtkClipboard *clipboard,
                                              gpointer user_data)
{
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    phpg_clipboard_set_info *set_info = (phpg_clipboard_set_info *) user_data;

    TSRMLS_FETCH();

    if (!zend_is_callable(set_info->clear_cb_data->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line \
%ld", callback_name, set_info->clear_cb_data->src_filename, \
set_info->clear_cb_data->src_lineno);  efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(set_info->clear_cb_data->user_args, 1, \
&n_args);  args[0] = &php_clipboard;

    call_user_function_ex(EG(function_table), NULL, \
set_info->clear_cb_data->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);

    phpg_cb_data_destroy(set_info->get_cb_data);
    phpg_cb_data_destroy(set_info->clear_cb_data);
    efree(set_info);
}

PHP_METHOD
{
    zval *get_cb, *clear_cb, *php_targets, *extra;
    phpg_clipboard_set_info *set_info;
	GtkTargetEntry *entries;
    gboolean ret;
    int n;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 3, &extra, "aVV", &php_targets, &get_cb, \
&clear_cb))  return;

    zval_add_ref(&get_cb);
    zval_add_ref(&clear_cb);
    if (extra) {
        zval_add_ref(&extra);
    }

    set_info = emalloc(sizeof(phpg_clipboard_set_info));
    set_info->get_cb_data  = phpg_cb_data_new(get_cb, extra TSRMLS_CC);
    set_info->clear_cb_data  = phpg_cb_data_new(clear_cb, extra TSRMLS_CC);
	entries = phpg_parse_target_entries(php_targets, &n TSRMLS_CC);

    ret = gtk_clipboard_set_with_data(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), entries, \
n,  phpg_clipboard_get_func_marshal,
                                      phpg_clipboard_clear_func_marshal,
                                      set_info);
    efree(entries);

    RETURN_BOOL(ret);
}

%% }}}

%% {{{ gtk_clipboard_wait_for_targets

%%
override gtk_clipboard_wait_for_targets
PHP_METHOD
{
    GtkSelectionData *data;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        return;
    }

    /* have to work around GTK+ bug #139883 */
    data = gtk_clipboard_wait_for_contents(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)),
                                           gdk_atom_intern("TARGETS", FALSE));

    if (data) {
        gint n_targets = 0;
        GdkAtom *targets = NULL;

        if (gtk_selection_data_get_targets(data, &targets, &n_targets)) {
            gchar *name;
            int i;

            array_init(return_value);
            for (i = 0; i < n_targets; i++) {
                name = gdk_atom_name(targets[i]);
                add_next_index_string(return_value, name, 1);
                g_free(name);
            }
            g_free(targets);
        }

        gtk_selection_data_free(data);
    }
}

%% }}}



-- 
PHP-GTK CVS Mailing List (http://gtk.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic