]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkoldeditable.c
Look up icon themes in the directories specified in the icon theme spec:
[~andy/gtk] / gtk / gtkoldeditable.c
index c28dbc6362c2e6d5eb2598b092d387482cbaf810..35e6a414409ea1de8ccb6c24042b150de3f1e11b 100644 (file)
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
-#include <ctype.h>
+#undef GTK_DISABLE_DEPRECATED
+
+#include <config.h>
 #include <string.h>
 #include "gdk/gdkkeysyms.h"
 #include "gdk/gdki18n.h"
+#include "gtkalias.h"
 #include "gtkclipboard.h"
 #include "gtkoldeditable.h"
 #include "gtkmain.h"
+#include "gtkmarshalers.h"
 #include "gtkselection.h"
 #include "gtksignal.h"
 
@@ -39,9 +43,6 @@
 #define INNER_BORDER     2
 
 enum {
-  CHANGED,
-  INSERT_TEXT,
-  DELETE_TEXT,
   /* Binding actions */
   ACTIVATE,
   SET_EDITABLE,
@@ -136,16 +137,18 @@ gtk_old_editable_get_type (void)
 
   if (!old_editable_type)
     {
-      static const GtkTypeInfo old_editable_info =
+      static const GTypeInfo old_editable_info =
       {
-       "GtkOldEditable",
-       sizeof (GtkOldEditable),
        sizeof (GtkOldEditableClass),
-       (GtkClassInitFunc) gtk_old_editable_class_init,
-       (GtkObjectInitFunc) gtk_old_editable_init,
-       /* reserved_1 */ NULL,
-       /* reserved_2 */ NULL,
-        (GtkClassInitFunc) NULL,
+       NULL,           /* base_init */
+       NULL,           /* base_finalize */
+        (GClassInitFunc) gtk_old_editable_class_init,
+       NULL,           /* class_finalize */
+       NULL,           /* class_data */
+       sizeof (GtkOldEditable),
+       0,              /* n_preallocs */
+        (GInstanceInitFunc) gtk_old_editable_init,
+       NULL,           /* value_table */
       };
 
       static const GInterfaceInfo editable_info =
@@ -155,7 +158,8 @@ gtk_old_editable_get_type (void)
        NULL                                                     /* interface_data */
       };
 
-      old_editable_type = gtk_type_unique (GTK_TYPE_WIDGET, &old_editable_info);
+      old_editable_type = g_type_register_static (GTK_TYPE_WIDGET, "GtkOldEditable",
+                                                 &old_editable_info, G_TYPE_FLAG_ABSTRACT);
       g_type_add_interface_static (old_editable_type,
                                   GTK_TYPE_EDITABLE,
                                   &editable_info);
@@ -182,9 +186,6 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
   widget_class->selection_received = gtk_old_editable_selection_received;
   widget_class->selection_get = gtk_old_editable_selection_get;
 
-  class->insert_text = NULL;
-  class->delete_text = NULL;
-
   class->activate = NULL;
   class->set_editable = gtk_old_editable_real_set_editable;
 
@@ -207,43 +208,12 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
   class->set_selection = NULL;
   class->set_position = NULL;
 
-  editable_signals[CHANGED] =
-    gtk_signal_new ("changed",
-                   GTK_RUN_LAST,
-                   GTK_CLASS_TYPE (object_class),
-                   GTK_SIGNAL_OFFSET (GtkOldEditableClass, changed),
-                   gtk_marshal_NONE__NONE,
-                   GTK_TYPE_NONE, 0);
-
-  editable_signals[INSERT_TEXT] =
-    gtk_signal_new ("insert_text",
-                   GTK_RUN_LAST,
-                   GTK_CLASS_TYPE (object_class),
-                   GTK_SIGNAL_OFFSET (GtkOldEditableClass, insert_text),
-                   gtk_marshal_NONE__STRING_INT_POINTER,
-                   GTK_TYPE_NONE,
-                   3,
-                   GTK_TYPE_STRING,
-                   GTK_TYPE_INT,
-                   GTK_TYPE_POINTER);
-
-  editable_signals[DELETE_TEXT] =
-    gtk_signal_new ("delete_text",
-                   GTK_RUN_LAST,
-                   GTK_CLASS_TYPE (object_class),
-                   GTK_SIGNAL_OFFSET (GtkOldEditableClass, delete_text),
-                   gtk_marshal_NONE__INT_INT,
-                   GTK_TYPE_NONE,
-                   2,
-                   GTK_TYPE_INT,
-                   GTK_TYPE_INT);                  
-
   editable_signals[ACTIVATE] =
     gtk_signal_new ("activate",
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, activate),
-                   gtk_marshal_NONE__NONE,
+                   _gtk_marshal_NONE__NONE,
                    GTK_TYPE_NONE, 0);
   widget_class->activate_signal = editable_signals[ACTIVATE];
 
@@ -252,7 +222,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, set_editable),
-                   gtk_marshal_NONE__BOOL,
+                   _gtk_marshal_NONE__BOOLEAN,
                    GTK_TYPE_NONE, 1,
                    GTK_TYPE_BOOL);
 
@@ -261,7 +231,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_cursor),
-                   gtk_marshal_NONE__INT_INT,
+                   _gtk_marshal_NONE__INT_INT,
                    GTK_TYPE_NONE, 2, 
                    GTK_TYPE_INT, 
                    GTK_TYPE_INT);
@@ -271,7 +241,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_word),
-                   gtk_marshal_NONE__INT,
+                   _gtk_marshal_NONE__INT,
                    GTK_TYPE_NONE, 1, 
                    GTK_TYPE_INT);
 
@@ -280,7 +250,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_page),
-                   gtk_marshal_NONE__INT_INT,
+                   _gtk_marshal_NONE__INT_INT,
                    GTK_TYPE_NONE, 2, 
                    GTK_TYPE_INT, 
                    GTK_TYPE_INT);
@@ -290,7 +260,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_to_row),
-                   gtk_marshal_NONE__INT,
+                   _gtk_marshal_NONE__INT,
                    GTK_TYPE_NONE, 1, 
                    GTK_TYPE_INT);
 
@@ -299,7 +269,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, move_to_column),
-                   gtk_marshal_NONE__INT,
+                   _gtk_marshal_NONE__INT,
                    GTK_TYPE_NONE, 1, 
                    GTK_TYPE_INT);
 
@@ -308,7 +278,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, kill_char),
-                   gtk_marshal_NONE__INT,
+                   _gtk_marshal_NONE__INT,
                    GTK_TYPE_NONE, 1, 
                    GTK_TYPE_INT);
 
@@ -317,7 +287,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, kill_word),
-                   gtk_marshal_NONE__INT,
+                   _gtk_marshal_NONE__INT,
                    GTK_TYPE_NONE, 1, 
                    GTK_TYPE_INT);
 
@@ -326,7 +296,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, kill_line),
-                   gtk_marshal_NONE__INT,
+                   _gtk_marshal_NONE__INT,
                    GTK_TYPE_NONE, 1, 
                    GTK_TYPE_INT);
 
@@ -335,7 +305,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, cut_clipboard),
-                   gtk_marshal_NONE__NONE,
+                   _gtk_marshal_NONE__NONE,
                    GTK_TYPE_NONE, 0);
 
   editable_signals[COPY_CLIPBOARD] =
@@ -343,7 +313,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, copy_clipboard),
-                   gtk_marshal_NONE__NONE,
+                   _gtk_marshal_NONE__NONE,
                    GTK_TYPE_NONE, 0);
 
   editable_signals[PASTE_CLIPBOARD] =
@@ -351,7 +321,7 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
                    GTK_RUN_LAST | GTK_RUN_ACTION,
                    GTK_CLASS_TYPE (object_class),
                    GTK_SIGNAL_OFFSET (GtkOldEditableClass, paste_clipboard),
-                   gtk_marshal_NONE__NONE,
+                   _gtk_marshal_NONE__NONE,
                    GTK_TYPE_NONE, 0);
 
   gtk_object_add_arg_type ("GtkOldEditable::text_position", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_TEXT_POSITION);
@@ -361,8 +331,8 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
 static void
 gtk_old_editable_editable_init (GtkEditableClass *iface)
 {
-  iface->insert_text = gtk_old_editable_insert_text;
-  iface->delete_text = gtk_old_editable_delete_text;
+  iface->do_insert_text = gtk_old_editable_insert_text;
+  iface->do_delete_text = gtk_old_editable_delete_text;
   iface->get_chars = gtk_old_editable_get_chars;
   iface->set_selection_bounds = gtk_old_editable_set_selection_bounds;
   iface->get_selection_bounds = gtk_old_editable_get_selection_bounds;
@@ -455,10 +425,11 @@ gtk_old_editable_insert_text (GtkEditable *editable,
 
   text[new_text_length] = '\0';
   strncpy (text, new_text, new_text_length);
-
-  gtk_signal_emit (GTK_OBJECT (editable), editable_signals[INSERT_TEXT], text, new_text_length, position);
-  gtk_signal_emit (GTK_OBJECT (editable), editable_signals[CHANGED]);
-
+  
+  g_signal_emit_by_name (editable, "insert_text", text, new_text_length,
+                        position);
+  g_signal_emit_by_name (editable, "changed");
+  
   if (new_text_length > 63)
     g_free (text);
 
@@ -474,8 +445,8 @@ gtk_old_editable_delete_text (GtkEditable *editable,
 
   gtk_widget_ref (GTK_WIDGET (old_editable));
 
-  gtk_signal_emit (GTK_OBJECT (old_editable), editable_signals[DELETE_TEXT], start_pos, end_pos);
-  gtk_signal_emit (GTK_OBJECT (old_editable), editable_signals[CHANGED]);
+  g_signal_emit_by_name (editable, "delete_text", start_pos, end_pos);
+  g_signal_emit_by_name (editable, "changed");
 
   if (old_editable->selection_start_pos == old_editable->selection_end_pos &&
       old_editable->has_selection)
@@ -512,12 +483,12 @@ gtk_old_editable_get_public_chars (GtkOldEditable   *old_editable,
                                   gint              end)
 {
   gchar *str = NULL;
-  gchar *charset;
+  const gchar *charset;
   gboolean need_conversion = !g_get_charset (&charset);
 
   if (old_editable->visible)
     {
-      GError *error;
+      GError *error = NULL;
       gchar *tmp = gtk_editable_get_chars (GTK_EDITABLE (old_editable), start, end);
 
       if (need_conversion)
@@ -586,7 +557,7 @@ gtk_old_editable_selection_clear (GtkWidget         *widget,
   
   /* Let the selection handling code know that the selection
    * has been changed, since we've overriden the default handler */
-  if (!gtk_selection_clear (widget, event))
+  if (!parent_class->selection_clear_event (widget, event))
     return FALSE;
   
   if (old_editable->has_selection)
@@ -620,7 +591,7 @@ gtk_old_editable_selection_get (GtkWidget        *widget,
 
   if (str)
     {
-      gtk_selection_data_set_text (selection_data, str);
+      gtk_selection_data_set_text (selection_data, str, -1);
       g_free (str);
     }
 }
@@ -631,12 +602,12 @@ gtk_old_editable_paste_received (GtkOldEditable *old_editable,
                                 gboolean        is_clipboard)
 {
   const gchar *str = NULL;
-  gchar *charset;
+  const gchar *charset;
   gboolean need_conversion = FALSE;
 
   if (text)
     {
-      GError *error;
+      GError *error = NULL;
       
       need_conversion = !g_get_charset (&charset);
 
@@ -743,12 +714,23 @@ old_editable_text_received_cb (GtkClipboard *clipboard,
   g_object_unref (G_OBJECT (old_editable));
 }
 
+/**
+ * gtk_old_editable_claim_selection:
+ * @old_editable: a #GtkOldEditable
+ * @claim: if %TRUE, claim ownership of the selection, if %FALSE, give
+ *   up ownership
+ * @time_: timestamp for this operation
+ * 
+ * Claims or gives up ownership of the selection.
+ */
 void
 gtk_old_editable_claim_selection (GtkOldEditable *old_editable, 
                                  gboolean        claim, 
                                  guint32         time)
 {
-  g_return_if_fail (old_editable != NULL);
+  GtkWidget *widget = GTK_WIDGET (old_editable);
+  GdkDisplay *display = gtk_widget_get_display (widget);
+  
   g_return_if_fail (GTK_IS_OLD_EDITABLE (old_editable));
   g_return_if_fail (GTK_WIDGET_REALIZED (old_editable));
 
@@ -756,13 +738,16 @@ gtk_old_editable_claim_selection (GtkOldEditable *old_editable,
   
   if (claim)
     {
-      if (gtk_selection_owner_set (GTK_WIDGET (old_editable), GDK_SELECTION_PRIMARY, time))
+      if (gtk_selection_owner_set_for_display (display, widget,
+                                              GDK_SELECTION_PRIMARY, time))
        old_editable->has_selection = TRUE;
     }
   else
     {
-      if (gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == GTK_WIDGET (old_editable)->window)
-       gtk_selection_owner_set (NULL, GDK_SELECTION_PRIMARY, time);
+      if (gdk_selection_owner_get_for_display (display, GDK_SELECTION_PRIMARY) == widget->window)
+       gtk_selection_owner_set_for_display (display,
+                                            NULL,
+                                            GDK_SELECTION_PRIMARY, time);
     }
 }
 
@@ -829,7 +814,10 @@ gtk_old_editable_real_copy_clipboard (GtkOldEditable *old_editable)
 
       if (text)
        {
-         gtk_clipboard_set_text (gtk_clipboard_get (GDK_NONE), text, -1);
+         GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (old_editable),
+                                                             GDK_SELECTION_CLIPBOARD);
+         
+         gtk_clipboard_set_text (clipboard, text, -1);
          g_free (text);
        }
     }
@@ -838,16 +826,23 @@ gtk_old_editable_real_copy_clipboard (GtkOldEditable *old_editable)
 static void
 gtk_old_editable_real_paste_clipboard (GtkOldEditable *old_editable)
 {
+  GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (old_editable), 
+                                                     GDK_SELECTION_CLIPBOARD);
+
   g_object_ref (G_OBJECT (old_editable));
-  gtk_clipboard_request_text (gtk_clipboard_get (GDK_NONE),
-                             old_editable_text_received_cb, old_editable);
+  gtk_clipboard_request_text (clipboard, old_editable_text_received_cb, old_editable);
 }
 
+/**
+ * gtk_old_editable_changed:
+ * @old_editable: a #GtkOldEditable
+ *
+ * Emits the ::changed signal on @old_editable.
+ */
 void
 gtk_old_editable_changed (GtkOldEditable *old_editable)
 {
-  g_return_if_fail (old_editable != NULL);
   g_return_if_fail (GTK_IS_OLD_EDITABLE (old_editable));
   
-  gtk_signal_emit (GTK_OBJECT (old_editable), editable_signals[CHANGED]);
+  g_signal_emit_by_name (old_editable, "changed");
 }