-/* 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
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);
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)
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;
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
gint end)
{
gchar *str = NULL;
- gchar *charset;
+ const gchar *charset;
gboolean need_conversion = !g_get_charset (&charset);
if (old_editable->visible)
/* 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)
if (str)
{
- gtk_selection_data_set_text (selection_data, str);
+ gtk_selection_data_set_text (selection_data, str, -1);
g_free (str);
}
}
gboolean is_clipboard)
{
const gchar *str = NULL;
- gchar *charset;
+ const gchar *charset;
gboolean need_conversion = FALSE;
if (text)
{
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)
{
* 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,
if (text)
{
- gtk_old_editable_paste_received (old_editable, text, FALSE);
+ gtk_old_editable_paste_received (old_editable, (gchar *) text, FALSE);
g_free (text);
}
}
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));
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);
}
}
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);
}
}
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)
{
g_signal_emit_by_name (old_editable, "changed");
}
+
+#define __GTK_OLD_EDITABLE_C__
+#include "gtkaliasdef.c"