Allow undo/redo of pasted text as a single item
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 8 Aug 2010 15:46:02 +0000 (17:46 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 21 Aug 2010 10:34:38 +0000 (12:34 +0200)
src/ui/gui/helper.c

index 492797dbbad8885b405a866329fd5d94982295b0..0dfae65964e47f973e3e0450aa2639b17692dd4b 100644 (file)
@@ -290,6 +290,8 @@ paste_syntax_to_window (const gchar *syntax)
 {
   static GtkWidget *the_syntax_pasteboard = NULL;
 
+  GtkTextBuffer *buffer = NULL;
+
   if ( NULL == the_syntax_pasteboard)
     {
       the_syntax_pasteboard = psppire_syntax_window_new ();
@@ -297,11 +299,12 @@ paste_syntax_to_window (const gchar *syntax)
                        &the_syntax_pasteboard);
     }
 
-  gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (the_syntax_pasteboard)->buffer,
-                                   syntax, -1);
+  buffer = GTK_TEXT_BUFFER (PSPPIRE_SYNTAX_WINDOW (the_syntax_pasteboard)->buffer);
 
-  gtk_text_buffer_insert_at_cursor (PSPPIRE_SYNTAX_WINDOW (the_syntax_pasteboard)->buffer,
-                                   "\n", 1);
+  gtk_text_buffer_begin_user_action (buffer);
+  gtk_text_buffer_insert_at_cursor (buffer, syntax, -1);
+  gtk_text_buffer_insert_at_cursor (buffer, "\n", 1);
+  gtk_text_buffer_end_user_action (buffer);
 
   gtk_widget_show (the_syntax_pasteboard);
 }