-gtk_editable_class_init (GtkEditableClass *class)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
-
- parent_class = gtk_type_class (gtk_widget_get_type ());
-
- editable_signals[CHANGED] =
- gtk_signal_new ("changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, changed),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- editable_signals[INSERT_TEXT] =
- gtk_signal_new ("insert_text",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, insert_text),
- gtk_editable_marshal_signal_1,
- 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,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, delete_text),
- gtk_editable_marshal_signal_2,
- GTK_TYPE_NONE,
- 2,
- GTK_TYPE_INT,
- GTK_TYPE_INT);
-
- editable_signals[ACTIVATE] =
- gtk_signal_new ("activate",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, activate),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- editable_signals[MOVE_CURSOR] =
- gtk_signal_new ("move_cursor",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, move_cursor),
- gtk_editable_marshal_signal_2,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_INT,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_WORD] =
- gtk_signal_new ("move_word",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, move_word),
- gtk_editable_marshal_signal_3,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_PAGE] =
- gtk_signal_new ("move_page",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, move_page),
- gtk_editable_marshal_signal_2,
- GTK_TYPE_NONE, 2,
- GTK_TYPE_INT,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_TO_ROW] =
- gtk_signal_new ("move_to_row",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, move_to_row),
- gtk_editable_marshal_signal_3,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[MOVE_TO_COLUMN] =
- gtk_signal_new ("move_to_column",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, move_to_column),
- gtk_editable_marshal_signal_3,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[KILL_CHAR] =
- gtk_signal_new ("kill_char",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, kill_char),
- gtk_editable_marshal_signal_3,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[KILL_WORD] =
- gtk_signal_new ("kill_word",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, kill_word),
- gtk_editable_marshal_signal_3,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[KILL_LINE] =
- gtk_signal_new ("kill_line",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, kill_line),
- gtk_editable_marshal_signal_3,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_INT);
-
- editable_signals[CUT_CLIPBOARD] =
- gtk_signal_new ("cut_clipboard",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, cut_clipboard),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- editable_signals[COPY_CLIPBOARD] =
- gtk_signal_new ("copy_clipboard",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, copy_clipboard),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- editable_signals[PASTE_CLIPBOARD] =
- gtk_signal_new ("paste_clipboard",
- GTK_RUN_LAST | GTK_RUN_ACTION,
- object_class->type,
- GTK_SIGNAL_OFFSET (GtkEditableClass, paste_clipboard),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, editable_signals, LAST_SIGNAL);
-
- object_class->finalize = gtk_editable_finalize;
-
- widget_class->selection_clear_event = gtk_editable_selection_clear;
- widget_class->selection_received = gtk_editable_selection_received;
-
- class->insert_text = NULL;
- class->delete_text = NULL;
- class->changed = NULL;
-
- class->activate = NULL;
-
- class->move_cursor = NULL;
- class->move_word = NULL;
- class->move_page = NULL;
- class->move_to_row = NULL;
- class->move_to_column = NULL;
-
- class->kill_char = NULL;
- class->kill_word = NULL;
- class->kill_line = NULL;
-
- class->cut_clipboard = gtk_real_editable_cut_clipboard;
- class->copy_clipboard = gtk_real_editable_copy_clipboard;
- class->paste_clipboard = gtk_real_editable_paste_clipboard;
-
- class->update_text = NULL;
- class->get_chars = NULL;
- class->set_selection = NULL;
- class->set_position = NULL;
-}
-
-static void
-gtk_editable_init (GtkEditable *editable)
-{
- GTK_WIDGET_SET_FLAGS (editable, GTK_CAN_FOCUS);
-
- editable->selection_start_pos = 0;
- editable->selection_end_pos = 0;
- editable->has_selection = FALSE;
- editable->editable = 1;
- editable->clipboard_text = NULL;
-
-#ifdef USE_XIM
- editable->ic = NULL;
-#endif
-
- if (!clipboard_atom)
- clipboard_atom = gdk_atom_intern ("CLIPBOARD", FALSE);
-
- gtk_selection_add_handler (GTK_WIDGET(editable), GDK_SELECTION_PRIMARY,
- GDK_TARGET_STRING, gtk_editable_selection_handler,
- NULL);
- gtk_selection_add_handler (GTK_WIDGET(editable), clipboard_atom,
- GDK_TARGET_STRING, gtk_editable_selection_handler,
- NULL);
-
- if (!text_atom)
- text_atom = gdk_atom_intern ("TEXT", FALSE);
-
- gtk_selection_add_handler (GTK_WIDGET(editable), GDK_SELECTION_PRIMARY,
- text_atom,
- gtk_editable_selection_handler,
- NULL);
- gtk_selection_add_handler (GTK_WIDGET(editable), clipboard_atom,
- text_atom,
- gtk_editable_selection_handler,
- NULL);
-
- if (!ctext_atom)
- ctext_atom = gdk_atom_intern ("COMPOUND_TEXT", FALSE);
-
- gtk_selection_add_handler (GTK_WIDGET(editable), GDK_SELECTION_PRIMARY,
- ctext_atom,
- gtk_editable_selection_handler,
- NULL);
- gtk_selection_add_handler (GTK_WIDGET(editable), clipboard_atom,
- ctext_atom,
- gtk_editable_selection_handler,
- NULL);
-}
-
-static void
-gtk_editable_finalize (GtkObject *object)