[gnome-builder] view: keep selection on modifier keys pressed



commit 7d0e8fb28feb976810b64d9c2998902a3e9e09cf
Author: Sebastien Lafargue <slafargue gnome org>
Date:   Wed Jan 13 17:42:51 2016 +0100

    view: keep selection on modifier keys pressed
    
    We have some code to keep the cursor on a char
    ( so that it not end on \n) but the selection
    is not take into account in this case.
    
    To reproduce this, the start of your selection
    must be at the end of a non-empty line and
    you must press a non-visible key like <shift>

 libide/ide-source-view.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 68031d9..cfe83a9 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -2057,16 +2057,21 @@ ide_source_view_do_mode (IdeSourceView *self,
     {
       GtkTextBuffer *buffer;
       GtkTextMark *insert;
-      GtkTextIter iter;
+      GtkTextMark *selection;
+      GtkTextIter insert_iter;
+      GtkTextIter selection_iter;
 
       buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self));
       insert = gtk_text_buffer_get_insert (buffer);
-      gtk_text_buffer_get_iter_at_mark (buffer, &iter, insert);
+      selection = gtk_text_buffer_get_selection_bound (buffer);
 
-      if (gtk_text_iter_ends_line (&iter) && !gtk_text_iter_starts_line (&iter))
+      gtk_text_buffer_get_iter_at_mark (buffer, &insert_iter, insert);
+      gtk_text_buffer_get_iter_at_mark (buffer, &selection_iter, selection);
+
+      if (gtk_text_iter_ends_line (&insert_iter) && !gtk_text_iter_starts_line (&insert_iter))
         {
-          gtk_text_iter_backward_char (&iter);
-          gtk_text_buffer_select_range (buffer, &iter, &iter);
+          gtk_text_iter_backward_char (&insert_iter);
+          gtk_text_buffer_select_range (buffer, &insert_iter, &selection_iter);
         }
     }
 


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