]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkoldeditable.c
GtkToolPalette: Change gtk_tool_palette_get_drop_group() return.
[~andy/gtk] / gtk / gtkoldeditable.c
index 54b73370c517e88b9fb397b9cfeb8eb7b78e9c89..f1bf74d0cf68dde399cdcd4e196b8ce221fc4ece 100644 (file)
@@ -24,6 +24,9 @@
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
+#undef GTK_DISABLE_DEPRECATED
+
+#include "config.h"
 #include <string.h>
 #include "gdk/gdkkeysyms.h"
 #include "gdk/gdki18n.h"
@@ -33,6 +36,9 @@
 #include "gtkmarshalers.h"
 #include "gtkselection.h"
 #include "gtksignal.h"
+#include "gtkintl.h"
+
+#include "gtkalias.h"
 
 #define MIN_EDITABLE_WIDTH  150
 #define DRAW_TIMEOUT     20
@@ -70,9 +76,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);
@@ -122,59 +126,27 @@ static gboolean gtk_old_editable_get_selection_bounds (GtkEditable *editable,
 static void     gtk_old_editable_set_position        (GtkEditable *editable,
                                                      gint         position);
 static gint     gtk_old_editable_get_position        (GtkEditable *editable);
+static void     gtk_old_editable_finalize            (GObject     *object);
 
-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 GTypeInfo old_editable_info =
-      {
-       sizeof (GtkOldEditableClass),
-       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 =
-      {
-       (GInterfaceInitFunc) gtk_old_editable_editable_init,     /* interface_init */
-       NULL,                                                    /* interface_finalize */
-       NULL                                                     /* interface_data */
-      };
-
-      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);
-    }
-
-  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)
 {
+  GObjectClass *gobject_class;
   GtkObjectClass *object_class;
   GtkWidgetClass *widget_class;
 
+  gobject_class = (GObjectClass*) class;
   object_class = (GtkObjectClass*) class;
   widget_class = (GtkWidgetClass*) class;
 
-  parent_class = gtk_type_class (GTK_TYPE_WIDGET);
-    
+  gobject_class->finalize = gtk_old_editable_finalize;
+
   object_class->set_arg = gtk_old_editable_set_arg;
   object_class->get_arg = gtk_old_editable_get_arg;
 
@@ -205,123 +177,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_VOID__VOID,
                    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__BOOLEAN,
+                   _gtk_marshal_VOID__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_VOID__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_VOID__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_VOID__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_VOID__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_VOID__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_VOID__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_VOID__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_VOID__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_VOID__VOID,
                    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_VOID__VOID,
                    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_VOID__VOID,
                    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
@@ -403,6 +375,14 @@ gtk_old_editable_init (GtkOldEditable *old_editable)
                             targets, G_N_ELEMENTS (targets));
 }
 
+static void
+gtk_old_editable_finalize (GObject *object)
+{
+  gtk_selection_clear_targets (GTK_WIDGET (object), GDK_SELECTION_PRIMARY);
+
+  G_OBJECT_CLASS (gtk_old_editable_parent_class)->finalize (object);
+}
+
 static void
 gtk_old_editable_insert_text (GtkEditable *editable,
                              const gchar *new_text,
@@ -412,7 +392,7 @@ gtk_old_editable_insert_text (GtkEditable *editable,
   gchar buf[64];
   gchar *text;
 
-  gtk_widget_ref (GTK_WIDGET (editable));
+  g_object_ref (editable);
 
   if (new_text_length <= 63)
     text = buf;
@@ -422,14 +402,14 @@ gtk_old_editable_insert_text (GtkEditable *editable,
   text[new_text_length] = '\0';
   strncpy (text, new_text, new_text_length);
   
-  g_signal_emit_by_name (editable, "insert_text", text, new_text_length,
+  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);
 
-  gtk_widget_unref (GTK_WIDGET (editable));
+  g_object_unref (editable);
 }
 
 static void
@@ -439,16 +419,16 @@ gtk_old_editable_delete_text (GtkEditable *editable,
 {
   GtkOldEditable *old_editable = GTK_OLD_EDITABLE (editable);
 
-  gtk_widget_ref (GTK_WIDGET (old_editable));
+  g_object_ref (old_editable);
 
-  g_signal_emit_by_name (editable, "delete_text", start_pos, end_pos);
+  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)
     gtk_old_editable_claim_selection (old_editable, FALSE, GDK_CURRENT_TIME);
   
-  gtk_widget_unref (GTK_WIDGET (old_editable));
+  g_object_unref (old_editable);
 }
 
 static void
@@ -553,7 +533,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)
@@ -668,7 +648,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)
     {
@@ -676,14 +656,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,
@@ -694,7 +674,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);
     }
 }
@@ -715,7 +695,7 @@ old_editable_text_received_cb (GtkClipboard *clipboard,
  * @old_editable: a #GtkOldEditable
  * @claim: if %TRUE, claim ownership of the selection, if %FALSE, give
  *   up ownership
- * @time: timestamp for this operation
+ * @time_: timestamp for this operation
  * 
  * Claims or gives up ownership of the selection.
  */
@@ -842,3 +822,6 @@ gtk_old_editable_changed (GtkOldEditable *old_editable)
   
   g_signal_emit_by_name (old_editable, "changed");
 }
+
+#define __GTK_OLD_EDITABLE_C__
+#include "gtkaliasdef.c"