]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkoldeditable.c
Practically everything changed.
[~andy/gtk] / gtk / gtkoldeditable.c
index 5182c1e1f91b9f8048ec4164eef4630024582a40..fc2a1523170b87065a34b162e5051e3467a01d90 100644 (file)
@@ -1,4 +1,4 @@
-/* GTK - The GIMP Toolkit
+/* GTK - The GTK+ Toolkit
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
  *
  * This library is free software; you can redistribute it and/or
  * 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 "gtkclipboard.h"
 #include "gtkoldeditable.h"
 #include "gtkmain.h"
+#include "gtkmarshalers.h"
 #include "gtkselection.h"
 #include "gtksignal.h"
+#include "gtkintl.h"
+
+#define GTK_DISABLE_DEPRECATED
+#include "gtkalias.h"
 
 #define MIN_EDITABLE_WIDTH  150
 #define DRAW_TIMEOUT     20
@@ -70,9 +77,7 @@ enum {
   TARGET_COMPOUND_TEXT
 };
 
-static void  gtk_old_editable_class_init           (GtkOldEditableClass *klass);
 static void  gtk_old_editable_editable_init        (GtkEditableClass    *iface);
-static void  gtk_old_editable_init                 (GtkOldEditable      *editable);
 static void  gtk_old_editable_set_arg              (GtkObject           *object,
                                                    GtkArg              *arg,
                                                    guint                arg_id);
@@ -123,43 +128,11 @@ static void     gtk_old_editable_set_position        (GtkEditable *editable,
                                                      gint         position);
 static gint     gtk_old_editable_get_position        (GtkEditable *editable);
 
-static GtkWidgetClass *parent_class = NULL;
 static guint editable_signals[LAST_SIGNAL] = { 0 };
 
-GtkType
-gtk_old_editable_get_type (void)
-{
-  static GtkType old_editable_type = 0;
-
-  if (!old_editable_type)
-    {
-      static const GtkTypeInfo 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,
-      };
-
-      static const GInterfaceInfo editable_info =
-      {
-       (GInterfaceInitFunc) gtk_old_editable_editable_init,     /* interface_init */
-       NULL,                                                    /* interface_finalize */
-       NULL                                                     /* interface_data */
-      };
-
-      old_editable_type = gtk_type_unique (GTK_TYPE_WIDGET, &old_editable_info);
-      g_type_add_interface_static (old_editable_type,
-                                  GTK_TYPE_EDITABLE,
-                                  &editable_info);
-    }
-
-  return old_editable_type;
-}
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GtkOldEditable, gtk_old_editable, GTK_TYPE_WIDGET,
+                                 G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
+                                                        gtk_old_editable_editable_init))
 
 static void
 gtk_old_editable_class_init (GtkOldEditableClass *class)
@@ -170,8 +143,6 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
   object_class = (GtkObjectClass*) class;
   widget_class = (GtkWidgetClass*) class;
 
-  parent_class = gtk_type_class (GTK_TYPE_WIDGET);
-    
   object_class->set_arg = gtk_old_editable_set_arg;
   object_class->get_arg = gtk_old_editable_get_arg;
 
@@ -202,123 +173,123 @@ gtk_old_editable_class_init (GtkOldEditableClass *class)
   class->set_position = NULL;
 
   editable_signals[ACTIVATE] =
-    gtk_signal_new ("activate",
+    gtk_signal_new (I_("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];
 
   editable_signals[SET_EDITABLE] =
-    gtk_signal_new ("set-editable",
+    gtk_signal_new (I_("set-editable"),
                    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);
 
   editable_signals[MOVE_CURSOR] =
-    gtk_signal_new ("move_cursor",
+    gtk_signal_new (I_("move_cursor"),
                    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);
 
   editable_signals[MOVE_WORD] =
-    gtk_signal_new ("move_word",
+    gtk_signal_new (I_("move_word"),
                    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);
 
   editable_signals[MOVE_PAGE] =
-    gtk_signal_new ("move_page",
+    gtk_signal_new (I_("move_page"),
                    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);
 
   editable_signals[MOVE_TO_ROW] =
-    gtk_signal_new ("move_to_row",
+    gtk_signal_new (I_("move_to_row"),
                    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);
 
   editable_signals[MOVE_TO_COLUMN] =
-    gtk_signal_new ("move_to_column",
+    gtk_signal_new (I_("move_to_column"),
                    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);
 
   editable_signals[KILL_CHAR] =
-    gtk_signal_new ("kill_char",
+    gtk_signal_new (I_("kill_char"),
                    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);
 
   editable_signals[KILL_WORD] =
-    gtk_signal_new ("kill_word",
+    gtk_signal_new (I_("kill_word"),
                    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);
 
   editable_signals[KILL_LINE] =
-    gtk_signal_new ("kill_line",
+    gtk_signal_new (I_("kill_line"),
                    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);
 
   editable_signals[CUT_CLIPBOARD] =
-    gtk_signal_new ("cut_clipboard",
+    gtk_signal_new (I_("cut_clipboard"),
                    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] =
-    gtk_signal_new ("copy_clipboard",
+    gtk_signal_new (I_("copy_clipboard"),
                    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] =
-    gtk_signal_new ("paste_clipboard",
+    gtk_signal_new (I_("paste_clipboard"),
                    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);
-  gtk_object_add_arg_type ("GtkOldEditable::editable", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_EDITABLE);
+  gtk_object_add_arg_type ("GtkOldEditable::text-position", GTK_TYPE_INT, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_TEXT_POSITION);
+  gtk_object_add_arg_type ("GtkOldEditable::editable", GTK_TYPE_BOOL, GTK_ARG_READWRITE | G_PARAM_STATIC_NAME, ARG_EDITABLE);
 }
 
 static void
@@ -476,7 +447,7 @@ 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)
@@ -550,7 +521,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 (!GTK_WIDGET_CLASS (gtk_old_editable_parent_class)->selection_clear_event (widget, event))
     return FALSE;
   
   if (old_editable->has_selection)
@@ -584,7 +555,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);
     }
 }
@@ -595,7 +566,7 @@ 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)
@@ -665,7 +636,7 @@ gtk_old_editable_selection_received  (GtkWidget         *widget,
 {
   GtkOldEditable *old_editable = GTK_OLD_EDITABLE (widget);
 
-  gchar *text = gtk_selection_data_get_text (selection_data);
+  guchar *text = gtk_selection_data_get_text (selection_data);
 
   if (!text)
     {
@@ -673,14 +644,14 @@ gtk_old_editable_selection_received  (GtkWidget         *widget,
        * for text and didn't get it, try string.  If we asked for
        * anything else and didn't get it, give up.
        */
-      if (selection_data->target == gdk_atom_intern ("UTF8_STRING", FALSE))
+      if (selection_data->target == gdk_atom_intern_static_string ("UTF8_STRING"))
        {
          gtk_selection_convert (widget, GDK_SELECTION_PRIMARY,
-                                gdk_atom_intern ("TEXT", FALSE),
+                                gdk_atom_intern_static_string ("TEXT"),
                                 time);
          return;
        }
-      else if (selection_data->target == gdk_atom_intern ("TEXT", FALSE))
+      else if (selection_data->target == gdk_atom_intern_static_string ("TEXT"))
        {
          gtk_selection_convert (widget, GDK_SELECTION_PRIMARY,
                                 GDK_TARGET_STRING,
@@ -691,7 +662,7 @@ gtk_old_editable_selection_received  (GtkWidget         *widget,
 
   if (text)
     {
-      gtk_old_editable_paste_received (old_editable, text, FALSE);
+      gtk_old_editable_paste_received (old_editable, (gchar *) text, FALSE);
       g_free (text);
     }
 }
@@ -707,11 +678,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)
 {
+  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));
 
@@ -719,13 +702,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);
     }
 }
 
@@ -792,7 +778,10 @@ gtk_old_editable_real_copy_clipboard (GtkOldEditable *old_editable)
 
       if (text)
        {
-         gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD), 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);
        }
     }
@@ -801,11 +790,19 @@ 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_SELECTION_CLIPBOARD),
-                             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)
 {
@@ -813,3 +810,6 @@ gtk_old_editable_changed (GtkOldEditable *old_editable)
   
   g_signal_emit_by_name (old_editable, "changed");
 }
+
+#define __GTK_OLD_EDITABLE_C__
+#include "gtkaliasdef.c"