From 1e5e0480fddfef1104ffc343943d3f32efb2f1bb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 18 Oct 2022 23:37:03 -0400 Subject: [PATCH] text: Make overwrite undo-friendly In overwrite mode, every typed character gets handled as a delete+insert, but we should not record these as two individually undoable steps. This matches how we handle overwrite mode in GtkTextView. Fixes: #4411 --- gtk/gtktext.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtktext.c b/gtk/gtktext.c index d67b57825c..39eda89baa 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -4321,6 +4321,9 @@ gtk_text_enter_text (GtkText *self, int tmp_pos; guint text_length; + gtk_text_history_begin_user_action (priv->history); + begin_change (self); + priv->need_im_reset = FALSE; if (priv->selection_bound != priv->current_pos) @@ -4338,6 +4341,9 @@ gtk_text_enter_text (GtkText *self, tmp_pos = priv->current_pos; gtk_editable_insert_text (GTK_EDITABLE (self), str, strlen (str), &tmp_pos); gtk_text_set_selection_bounds (self, tmp_pos, tmp_pos); + + end_change (self); + gtk_text_history_end_user_action (priv->history); } /* All changes to priv->current_pos and priv->selection_bound