* 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"
#define INNER_BORDER 2
enum {
- CHANGED,
- INSERT_TEXT,
- DELETE_TEXT,
/* Binding actions */
ACTIVATE,
SET_EDITABLE,
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 =
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);
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;
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];
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);
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);
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);
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);
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);
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);
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);
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);
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);
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_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_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);
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;
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);
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)
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)
/* 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)
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)
{
- GError *error;
+ GError *error = NULL;
need_conversion = !g_get_charset (&charset);
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));
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_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);
}
}
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");
}