]> Pileus Git - ~andy/gtk/blobdiff - tests/testselection.c
Really create a native window when getting xid
[~andy/gtk] / tests / testselection.c
index 73345435b94392b254eb9260ea91f0fae0316afc..cd1817369768fd13c326e1f4de647b85c3877e5c 100644 (file)
@@ -24,6 +24,9 @@
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
+#undef GTK_DISABLE_DEPRECATED
+
+#include "config.h"
 #include <stdio.h>
 #include <string.h>
 #define GTK_ENABLE_BROKEN
@@ -62,49 +65,50 @@ typedef struct _Target {
    in the ICCCM */
 
 static Target targets[] = {
-  { "ADOBE_PORTABLE_DOCUMENT_FORMAT",      STRING,        0, 8 },
-  { "APPLE_PICT",                          APPLE_PICT,    0, 8 },
-  { "BACKGROUND",                          PIXEL,         0, 32 },
-  { "BITMAP",                              BITMAP,        0, 32 },
-  { "CHARACTER_POSITION",                   SPAN,         0, 32 },
-  { "CLASS",                               TEXT,          0, 8 },
-  { "CLIENT_WINDOW",                       WINDOW,        0, 32 },
-  { "COLORMAP",                            COLORMAP,      0, 32 },
-  { "COLUMN_NUMBER",                       SPAN,          0, 32 },
-  { "COMPOUND_TEXT",                       COMPOUND_TEXT, 0, 8 },
+  { "ADOBE_PORTABLE_DOCUMENT_FORMAT",      STRING,        NULL, 8 },
+  { "APPLE_PICT",                          APPLE_PICT,    NULL, 8 },
+  { "BACKGROUND",                          PIXEL,         NULL, 32 },
+  { "BITMAP",                              BITMAP,        NULL, 32 },
+  { "CHARACTER_POSITION",                   SPAN,         NULL, 32 },
+  { "CLASS",                               TEXT,          NULL, 8 },
+  { "CLIENT_WINDOW",                       WINDOW,        NULL, 32 },
+  { "COLORMAP",                            COLORMAP,      NULL, 32 },
+  { "COLUMN_NUMBER",                       SPAN,          NULL, 32 },
+  { "COMPOUND_TEXT",                       COMPOUND_TEXT, NULL, 8 },
   /*  { "DELETE", "NULL", 0, ? }, */
-  { "DRAWABLE",                            DRAWABLE,      0, 32 },
-  { "ENCAPSULATED_POSTSCRIPT",                     STRING,        0, 8 },
-  { "ENCAPSULATED_POSTSCRIPT_INTERCHANGE",  STRING,       0, 8 },
-  { "FILE_NAME",                           TEXT,          0, 8 },
-  { "FOREGROUND",                          PIXEL,         0, 32 },
-  { "HOST_NAME",                           TEXT,          0, 8 },
+  { "DRAWABLE",                            DRAWABLE,      NULL, 32 },
+  { "ENCAPSULATED_POSTSCRIPT",                     STRING,        NULL, 8 },
+  { "ENCAPSULATED_POSTSCRIPT_INTERCHANGE",  STRING,       NULL, 8 },
+  { "FILE_NAME",                           TEXT,          NULL, 8 },
+  { "FOREGROUND",                          PIXEL,         NULL, 32 },
+  { "HOST_NAME",                           TEXT,          NULL, 8 },
   /*  { "INSERT_PROPERTY", "NULL", 0, ? NULL }, */
   /*  { "INSERT_SELECTION", "NULL", 0, ? NULL }, */
-  { "LENGTH",                              INTEGER,       0, 32 },
-  { "LINE_NUMBER",                         SPAN,          0, 32 },
-  { "LIST_LENGTH",                         INTEGER,       0, 32 },
-  { "MODULE",                              TEXT,          0, 8 },
+  { "LENGTH",                              INTEGER,       NULL, 32 },
+  { "LINE_NUMBER",                         SPAN,          NULL, 32 },
+  { "LIST_LENGTH",                         INTEGER,       NULL, 32 },
+  { "MODULE",                              TEXT,          NULL, 8 },
   /*  { "MULTIPLE", "ATOM_PAIR", 0, 32 }, */
-  { "NAME",                                TEXT,          0, 8 },
-  { "ODIF",                                TEXT,          0, 8 },
-  { "OWNER_OS",                            TEXT,          0, 8 },
-  { "PIXMAP",                              PIXMAP,        0, 32 },
-  { "POSTSCRIPT",                          STRING,        0, 8 },
-  { "PROCEDURE",                           TEXT,          0, 8 },
-  { "PROCESS",                             INTEGER,       0, 32 },
-  { "STRING",                              STRING,        0, 8 },
-  { "TARGETS",                                     ATOM,          0, 32 },
-  { "TASK",                                INTEGER,       0, 32 },
-  { "TEXT",                                TEXT,          0, 8  },
-  { "TIMESTAMP",                           INTEGER,       0, 32 },
-  { "USER",                                TEXT,          0, 8 },
+  { "NAME",                                TEXT,          NULL, 8 },
+  { "ODIF",                                TEXT,          NULL, 8 },
+  { "OWNER_OS",                            TEXT,          NULL, 8 },
+  { "PIXMAP",                              PIXMAP,        NULL, 32 },
+  { "POSTSCRIPT",                          STRING,        NULL, 8 },
+  { "PROCEDURE",                           TEXT,          NULL, 8 },
+  { "PROCESS",                             INTEGER,       NULL, 32 },
+  { "STRING",                              STRING,        NULL, 8 },
+  { "TARGETS",                                     ATOM,          NULL, 32 },
+  { "TASK",                                INTEGER,       NULL, 32 },
+  { "TEXT",                                TEXT,          NULL, 8  },
+  { "TIMESTAMP",                           INTEGER,       NULL, 32 },
+  { "USER",                                TEXT,          NULL, 8 },
 };
 
 static int num_targets = sizeof(targets)/sizeof(Target);
 
 static int have_selection = FALSE;
 
+GtkWidget *selection_widget;
 GtkWidget *selection_text;
 GtkWidget *selection_button;
 GString *selection_string = NULL;
@@ -140,7 +144,7 @@ selection_toggled (GtkWidget *widget)
 {
   if (GTK_TOGGLE_BUTTON(widget)->active)
     {
-      have_selection = gtk_selection_owner_set (widget,
+      have_selection = gtk_selection_owner_set (selection_widget,
                                                GDK_SELECTION_PRIMARY,
                                                GDK_CURRENT_TIME);
       if (!have_selection)
@@ -196,7 +200,7 @@ gint
 selection_clear (GtkWidget *widget, GdkEventSelection *event)
 {
   have_selection = FALSE;
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(widget), FALSE);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(selection_button), FALSE);
 
   return TRUE;
 }
@@ -289,9 +293,8 @@ selection_received (GtkWidget *widget, GtkSelectionData *data)
   if (seltype == SEL_TYPE_NONE)
     {
       char *name = gdk_atom_name (data->type);
-      g_print("Don't know how to handle type: %s (%ld)\n",
-             name?name:"<unknown>",
-             data->type);
+      g_print("Don't know how to handle type: %s\n",
+             name?name:"<unknown>");
       return;
     }
 
@@ -335,9 +338,8 @@ selection_received (GtkWidget *widget, GtkSelectionData *data)
        default:
          {
            char *name = gdk_atom_name (data->type);
-           g_print("Can't convert type %s (%ld) to string\n",
-                   name?name:"<unknown>",
-                   data->type);
+           g_print("Can't convert type %s to string\n",
+                   name?name:"<unknown>");
            position = data->length;
            continue;
          }
@@ -369,7 +371,7 @@ paste (GtkWidget *widget, GtkWidget *entry)
       return;
     }
 
-  gtk_selection_convert (selection_button, GDK_SELECTION_PRIMARY, atom, 
+  gtk_selection_convert (selection_widget, GDK_SELECTION_PRIMARY, atom, 
                         GDK_CURRENT_TIME);
 }
 
@@ -402,12 +404,14 @@ main (int argc, char *argv[])
 
   init_atoms();
 
+  selection_widget = gtk_invisible_new ();
+
   dialog = gtk_dialog_new ();
   gtk_widget_set_name (dialog, "Test Input");
   gtk_container_set_border_width (GTK_CONTAINER(dialog), 0);
 
-  gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
-                     GTK_SIGNAL_FUNC (quit), NULL);
+  g_signal_connect (dialog, "destroy",
+                   G_CALLBACK (quit), NULL);
 
   table = gtk_table_new (4, 2, FALSE);
   gtk_container_set_border_width (GTK_CONTAINER(table), 10);
@@ -425,18 +429,18 @@ main (int argc, char *argv[])
                    GTK_EXPAND | GTK_FILL, 0, 0, 0);
   gtk_widget_show (selection_button);
 
-  gtk_signal_connect (GTK_OBJECT(selection_button), "toggled",
-                     GTK_SIGNAL_FUNC (selection_toggled), NULL);
-  gtk_signal_connect (GTK_OBJECT(selection_button), "selection_clear_event",
-                     GTK_SIGNAL_FUNC (selection_clear), NULL);
-  gtk_signal_connect (GTK_OBJECT(selection_button), "selection_received",
-                     GTK_SIGNAL_FUNC (selection_received), NULL);
+  g_signal_connect (selection_button, "toggled",
+                   G_CALLBACK (selection_toggled), NULL);
+  g_signal_connect (selection_widget, "selection_clear_event",
+                   G_CALLBACK (selection_clear), NULL);
+  g_signal_connect (selection_widget, "selection_received",
+                   G_CALLBACK (selection_received), NULL);
 
-  gtk_selection_add_targets (selection_button, GDK_SELECTION_PRIMARY,
+  gtk_selection_add_targets (selection_widget, GDK_SELECTION_PRIMARY,
                             targetlist, ntargets);
 
-  gtk_signal_connect (GTK_OBJECT(selection_button), "selection_get",
-                     GTK_SIGNAL_FUNC (selection_get), NULL);
+  g_signal_connect (selection_widget, "selection_get",
+                   G_CALLBACK (selection_get), NULL);
 
   selection_text = gtk_text_new (NULL, NULL);
   gtk_table_attach_defaults (GTK_TABLE (table), selection_text, 0, 1, 1, 2);
@@ -469,17 +473,16 @@ main (int argc, char *argv[])
   button = gtk_button_new_with_label ("Paste");
   gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->action_area), 
                      button, TRUE, TRUE, 0);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                     GTK_SIGNAL_FUNC (paste), entry);
+  g_signal_connect (button, "clicked",
+                   G_CALLBACK (paste), entry);
   gtk_widget_show (button);
 
   button = gtk_button_new_with_label ("Quit");
   gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->action_area), 
                      button, TRUE, TRUE, 0);
 
-  gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                            GTK_SIGNAL_FUNC (gtk_widget_destroy), 
-                            GTK_OBJECT (dialog));
+  g_signal_connect_swapped (button, "clicked",
+                           G_CALLBACK (gtk_widget_destroy), dialog);
   gtk_widget_show (button);
 
   gtk_widget_show (dialog);