[gtksourceview] Revalidate iters passed to indent/unindent_lines



commit ecaea906724bf5c12ce70fff4b6e14ff919ba0ba
Author: Paolo Borelli <pborelli gnome org>
Date:   Sun Mar 29 21:40:43 2015 +0200

    Revalidate iters passed to indent/unindent_lines

 gtksourceview/gtksourceview.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/gtksourceview/gtksourceview.c b/gtksourceview/gtksourceview.c
index fbb115b..b6f0a03 100644
--- a/gtksourceview/gtksourceview.c
+++ b/gtksourceview/gtksourceview.c
@@ -3397,6 +3397,7 @@ gtk_source_view_indent_lines (GtkSourceView *view,
 {
        GtkTextBuffer *buf;
        gboolean bracket_hl;
+       GtkTextMark *start_mark, *end_mark;
        gint start_line, end_line;
        gchar *tab_buffer = NULL;
        guint tabs = 0;
@@ -3413,6 +3414,9 @@ gtk_source_view_indent_lines (GtkSourceView *view,
        bracket_hl = gtk_source_buffer_get_highlight_matching_brackets (GTK_SOURCE_BUFFER (buf));
        gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (buf), FALSE);
 
+       start_mark = gtk_text_buffer_create_mark (buf, NULL, start, FALSE);
+       end_mark = gtk_text_buffer_create_mark (buf, NULL, end, FALSE);
+
        start_line = gtk_text_iter_get_line (start);
        end_line = gtk_text_iter_get_line (end);
 
@@ -3512,6 +3516,13 @@ gtk_source_view_indent_lines (GtkSourceView *view,
 
        gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (view),
                                            gtk_text_buffer_get_insert (buf));
+
+       /* revalidate iters */
+       gtk_text_buffer_get_iter_at_mark (buf, start, start_mark);
+       gtk_text_buffer_get_iter_at_mark (buf, end, end_mark);
+
+       gtk_text_buffer_delete_mark (buf, start_mark);
+       gtk_text_buffer_delete_mark (buf, end_mark);
 }
 
 /**
@@ -3532,6 +3543,7 @@ gtk_source_view_unindent_lines (GtkSourceView *view,
 {
        GtkTextBuffer *buf;
        gboolean bracket_hl;
+       GtkTextMark *start_mark, *end_mark;
        gint start_line, end_line;
        gint tab_width;
        gint indent_width;
@@ -3547,6 +3559,9 @@ gtk_source_view_unindent_lines (GtkSourceView *view,
        bracket_hl = gtk_source_buffer_get_highlight_matching_brackets (GTK_SOURCE_BUFFER (buf));
        gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (buf), FALSE);
 
+       start_mark = gtk_text_buffer_create_mark (buf, NULL, start, FALSE);
+       end_mark = gtk_text_buffer_create_mark (buf, NULL, end, FALSE);
+
        start_line = gtk_text_iter_get_line (start);
        end_line = gtk_text_iter_get_line (end);
 
@@ -3613,6 +3628,13 @@ gtk_source_view_unindent_lines (GtkSourceView *view,
 
        gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (view),
                                            gtk_text_buffer_get_insert (buf));
+
+       /* revalidate iters */
+       gtk_text_buffer_get_iter_at_mark (buf, start, start_mark);
+       gtk_text_buffer_get_iter_at_mark (buf, end, end_mark);
+
+       gtk_text_buffer_delete_mark (buf, start_mark);
+       gtk_text_buffer_delete_mark (buf, end_mark);
 }
 
 static gint


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