[gnome-builder/wip/libide-merge] dont scroll to mark when reentering focus



commit 8e995b437780c91b4d335398055c9ee831a5e89c
Author: Christian Hergert <christian hergert me>
Date:   Thu Mar 19 14:15:28 2015 -0700

    dont scroll to mark when reentering focus

 libide/ide-source-view.c |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 99b08cd..75a6677 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -3282,11 +3282,11 @@ ide_source_view_real_move_error (IdeSourceView    *self,
 }
 
 static void
-ide_source_view_real_restore_insert_mark (IdeSourceView *self)
+ide_source_view_real_restore_insert_mark_full (IdeSourceView *self,
+                                               gboolean       move_mark)
 {
   IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
   GtkTextBuffer *buffer;
-  GtkTextMark *insert;
   GtkTextIter iter;
   GtkTextIter selection;
   guint line_offset;
@@ -3315,8 +3315,19 @@ ide_source_view_real_restore_insert_mark (IdeSourceView *self)
 
   gtk_text_buffer_select_range (buffer, &iter, &selection);
 
-  insert = gtk_text_buffer_get_insert (buffer);
-  ide_source_view_scroll_mark_onscreen (self, insert);
+  if (move_mark)
+    {
+      GtkTextMark *insert;
+
+      insert = gtk_text_buffer_get_insert (buffer);
+      ide_source_view_scroll_mark_onscreen (self, insert);
+    }
+}
+
+static void
+ide_source_view_real_restore_insert_mark (IdeSourceView *self)
+{
+  ide_source_view_real_restore_insert_mark_full (self, TRUE);
 }
 
 static void
@@ -4159,8 +4170,6 @@ ide_source_view_focus_in_event (GtkWidget     *widget,
 
   g_assert (IDE_IS_SOURCE_VIEW (self));
 
-  ret = GTK_WIDGET_CLASS (ide_source_view_parent_class)->focus_in_event (widget, event);
-
   /*
    * Restore the completion window now that we have regained focus.
    */
@@ -4174,12 +4183,14 @@ ide_source_view_focus_in_event (GtkWidget     *widget,
    */
   priv->saved_selection_line = priv->saved_line;
   priv->saved_selection_line_offset = priv->saved_line_offset;
-  ide_source_view_real_restore_insert_mark (self);
+  ide_source_view_real_restore_insert_mark_full (self, FALSE);
 
   /* restore line highlight if enabled */
   if (priv->highlight_current_line)
     gtk_source_view_set_highlight_current_line (GTK_SOURCE_VIEW (self), TRUE);
 
+  ret = GTK_WIDGET_CLASS (ide_source_view_parent_class)->focus_in_event (widget, event);
+
   return ret;
 }
 


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