summaryrefslogtreecommitdiff
path: root/gtk/gtkeditable.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkeditable.c')
-rw-r--r--gtk/gtkeditable.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gtk/gtkeditable.c b/gtk/gtkeditable.c
index ec4cd314e8..04d64a50a6 100644
--- a/gtk/gtkeditable.c
+++ b/gtk/gtkeditable.c
@@ -183,6 +183,7 @@ gtk_editable_class_init (GtkEditableClass *class)
GTK_SIGNAL_OFFSET (GtkEditableClass, activate),
gtk_marshal_NONE__NONE,
GTK_TYPE_NONE, 0);
+ widget_class->activate_signal = editable_signals[ACTIVATE];
editable_signals[SET_EDITABLE] =
gtk_signal_new ("set-editable",
@@ -413,13 +414,14 @@ gtk_editable_insert_text (GtkEditable *editable,
gint *position)
{
GtkEditableClass *klass;
-
gchar buf[64];
gchar *text;
g_return_if_fail (editable != NULL);
g_return_if_fail (GTK_IS_EDITABLE (editable));
+ gtk_widget_ref (GTK_WIDGET (editable));
+
klass = GTK_EDITABLE_CLASS (GTK_OBJECT (editable)->klass);
if (new_text_length <= 64)
@@ -434,6 +436,8 @@ gtk_editable_insert_text (GtkEditable *editable,
if (new_text_length > 64)
g_free (text);
+
+ gtk_widget_unref (GTK_WIDGET (editable));
}
void
@@ -446,10 +450,14 @@ gtk_editable_delete_text (GtkEditable *editable,
g_return_if_fail (editable != NULL);
g_return_if_fail (GTK_IS_EDITABLE (editable));
+ gtk_widget_ref (GTK_WIDGET (editable));
+
klass = GTK_EDITABLE_CLASS (GTK_OBJECT (editable)->klass);
gtk_signal_emit (GTK_OBJECT (editable), editable_signals[DELETE_TEXT], start_pos, end_pos);
gtk_signal_emit (GTK_OBJECT (editable), editable_signals[CHANGED]);
+
+ gtk_widget_unref (GTK_WIDGET (editable));
}
static void