[gtk/text-overwrite-undo] text: Make overwrite undo-friendly




commit 1e5e0480fddfef1104ffc343943d3f32efb2f1bb
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Oct 18 23:37:03 2022 -0400

    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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]