[gnome-builder] adapt to get_iter_at_line_offset new behaviour



commit 9420d29e52d5536d49803189585b39bb947f0bb5
Author: Sebastien Lafargue <slafargue gnome org>
Date:   Tue Nov 24 23:28:22 2015 +0100

    adapt to get_iter_at_line_offset new behaviour
    
    starting from gtk+ 3.20, this function accept
    invalid line and/or offset

 libide/ide-buffer-manager.c               |    5 +---
 libide/ide-buffer.c                       |   13 +--------
 libide/ide-source-view-movements.c        |   40 ++++++++-------------------
 libide/ide-source-view.c                  |   38 +++++----------------------
 plugins/ctags/ide-ctags-symbol-resolver.c |    9 +-----
 src/editor/gb-editor-view.c               |    5 +---
 src/util/gb-gtk.c                         |   41 ++--------------------------
 src/util/gb-gtk.h                         |    5 ---
 tests/test-ide-source-view.c              |    6 +---
 9 files changed, 29 insertions(+), 133 deletions(-)
---
diff --git a/libide/ide-buffer-manager.c b/libide/ide-buffer-manager.c
index 2b7d699..3df9e1d 100644
--- a/libide/ide-buffer-manager.c
+++ b/libide/ide-buffer-manager.c
@@ -517,10 +517,7 @@ ide_buffer_manager_load_file__load_cb (GObject      *object,
 
       IDE_TRACE_MSG ("Restoring insert mark to %u:%u", line, line_offset);
 
-      gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (state->buffer), &iter, line);
-      for (; line_offset; line_offset--)
-        if (gtk_text_iter_ends_line (&iter) || !gtk_text_iter_forward_char (&iter))
-          break;
+      gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (state->buffer), &iter, line, line_offset);
     }
   else
     {
diff --git a/libide/ide-buffer.c b/libide/ide-buffer.c
index 6d58673..7628938 100644
--- a/libide/ide-buffer.c
+++ b/libide/ide-buffer.c
@@ -176,13 +176,7 @@ ide_buffer_get_iter_at_location (IdeBuffer         *self,
   line = ide_source_location_get_line (location);
   line_offset = ide_source_location_get_line_offset (location);
 
-  gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (self), iter, line);
-
-  while (line_offset && !gtk_text_iter_ends_line (iter))
-    {
-      gtk_text_iter_forward_char (iter);
-      line_offset--;
-    }
+  gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (self), iter, line, line_offset);
 }
 
 static void
@@ -2017,10 +2011,7 @@ ide_buffer_get_iter_at_source_location (IdeBuffer         *self,
   line = ide_source_location_get_line (location);
   line_offset = ide_source_location_get_line_offset (location);
 
-  gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (self), iter, line);
-  for (; line_offset; line_offset--)
-    if (gtk_text_iter_ends_line (iter) || !gtk_text_iter_forward_char (iter))
-      break;
+  gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (self), iter, line, line_offset);
 }
 
 void
diff --git a/libide/ide-source-view-movements.c b/libide/ide-source-view-movements.c
index 2b8e307..429ae79 100644
--- a/libide/ide-source-view-movements.c
+++ b/libide/ide-source-view-movements.c
@@ -526,7 +526,10 @@ ide_source_view_movements_next_line (Movement *mv)
       gtk_text_iter_set_line (&mv->insert, target_line);
 
       if (target_line != gtk_text_iter_get_line (&mv->insert))
+      {
+        gtk_text_buffer_get_end_iter (buffer, &mv->insert);
         goto select_to_end;
+      }
 
       select_range (mv, &mv->insert, &mv->selection);
       ensure_anchor_selected (mv);
@@ -539,33 +542,17 @@ ide_source_view_movements_next_line (Movement *mv)
         *mv->target_offset = ++offset;
     }
 
-  gtk_text_buffer_get_iter_at_line (buffer, &mv->insert, line + 1);
-  if ((line + 1) == gtk_text_iter_get_line (&mv->insert))
+  gtk_text_buffer_get_iter_at_line_offset (buffer, &mv->insert, line + 1, offset);
+
+select_to_end:
+
+  if (has_selection)
     {
-      for (; offset; offset--)
-        if (!gtk_text_iter_ends_line (&mv->insert))
-          if (!gtk_text_iter_forward_char (&mv->insert))
-            break;
-      if (has_selection)
-        {
-          select_range (mv, &mv->insert, &mv->selection);
-          ensure_anchor_selected (mv);
-        }
-      else
-        gtk_text_buffer_select_range (buffer, &mv->insert, &mv->insert);
+      select_range (mv, &mv->insert, &mv->selection);
+      ensure_anchor_selected (mv);
     }
   else
-    {
-select_to_end:
-      gtk_text_buffer_get_end_iter (buffer, &mv->insert);
-      if (has_selection)
-        {
-          select_range (mv, &mv->insert, &mv->selection);
-          ensure_anchor_selected (mv);
-        }
-      else
-        gtk_text_buffer_select_range (buffer, &mv->insert, &mv->insert);
-    }
+    gtk_text_buffer_select_range (buffer, &mv->insert, &mv->insert);
 
   /* make sure selection/insert are up to date */
   if (!gtk_text_buffer_get_has_selection (buffer))
@@ -621,10 +608,7 @@ ide_source_view_movements_previous_line (Movement *mv)
   gtk_text_buffer_get_iter_at_line (buffer, &mv->insert, line - 1);
   if ((line - 1) == gtk_text_iter_get_line (&mv->insert))
     {
-      for (; offset; offset--)
-        if (!gtk_text_iter_ends_line (&mv->insert))
-          if (!gtk_text_iter_forward_char (&mv->insert))
-            break;
+      gtk_text_buffer_get_iter_at_line_offset (buffer, &mv->insert, line - 1, offset);
 
       if (has_selection)
         {
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 2131d40..fa59323 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -2944,10 +2944,7 @@ ide_source_view_real_paste_clipboard_extended (IdeSourceView *self,
         }
     }
 
-  gtk_text_buffer_get_iter_at_line (buffer, &iter, target_line);
-  for (; target_line_offset; target_line_offset--)
-    if (gtk_text_iter_ends_line (&iter) || !gtk_text_iter_forward_char (&iter))
-      break;
+  gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, target_line, target_line_offset);
   gtk_text_buffer_select_range (buffer, &iter, &iter);
 
   gtk_text_buffer_end_user_action (buffer);
@@ -3477,29 +3474,16 @@ ide_source_view_real_restore_insert_mark_full (IdeSourceView *self,
   GtkTextBuffer *buffer;
   GtkTextIter iter;
   GtkTextIter selection;
-  guint line_offset;
 
   g_assert (IDE_IS_SOURCE_VIEW (self));
 
   buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self));
-  gtk_text_buffer_get_iter_at_line (buffer, &iter, priv->saved_line);
-  gtk_text_buffer_get_iter_at_line (buffer, &selection, priv->saved_selection_line);
-
-  line_offset = priv->saved_line_offset;
-
-  for (; line_offset; line_offset--)
-    {
-      if (gtk_text_iter_ends_line (&iter) || !gtk_text_iter_forward_char (&iter))
-        break;
-    }
-
-  line_offset = priv->saved_selection_line_offset;
 
-  for (; line_offset; line_offset--)
-    {
-      if (gtk_text_iter_ends_line (&selection) || !gtk_text_iter_forward_char (&selection))
-        break;
-    }
+  gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, priv->saved_line, priv->saved_line_offset);
+  gtk_text_buffer_get_iter_at_line_offset (buffer,
+                                           &selection,
+                                           priv->saved_selection_line,
+                                           priv->saved_selection_line_offset);
 
   gtk_text_buffer_select_range (buffer, &iter, &selection);
 
@@ -7596,15 +7580,7 @@ ide_source_view_get_visual_position (IdeSourceView *self,
   buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self));
 
   if (!gtk_widget_has_focus (GTK_WIDGET (self)))
-    {
-      gint offset;
-
-      gtk_text_buffer_get_iter_at_line (buffer, &iter, priv->saved_line);
-
-      for (offset = priv->saved_line_offset; offset; offset--)
-        if (gtk_text_iter_ends_line (&iter) || !gtk_text_iter_forward_char (&iter))
-          break;
-    }
+    gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, priv->saved_line, priv->saved_line_offset);
   else
     {
       GtkTextMark *mark;
diff --git a/plugins/ctags/ide-ctags-symbol-resolver.c b/plugins/ctags/ide-ctags-symbol-resolver.c
index fc0d3e5..c06b395 100644
--- a/plugins/ctags/ide-ctags-symbol-resolver.c
+++ b/plugins/ctags/ide-ctags-symbol-resolver.c
@@ -349,14 +349,7 @@ ide_ctags_symbol_resolver_lookup_symbol_async (IdeSymbolResolver   *resolver,
     lang_id = gtk_source_language_get_id (language);
   allowed = ide_ctags_get_allowed_suffixes (lang_id);
 
-  gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (buffer), &iter, line);
-
-  for (i = 0; i < line_offset; i++)
-    {
-      if (gtk_text_iter_ends_line (&iter))
-        break;
-      gtk_text_iter_forward_char (&iter);
-    }
+  gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (buffer), &iter, line, line_offset);
 
   keyword = ide_buffer_get_word_at_iter (buffer, &iter);
 
diff --git a/src/editor/gb-editor-view.c b/src/editor/gb-editor-view.c
index 4b0f259..ed33d43 100644
--- a/src/editor/gb-editor-view.c
+++ b/src/editor/gb-editor-view.c
@@ -89,10 +89,7 @@ gb_editor_view_navigate_to (GbView            *view,
   line = ide_source_location_get_line (location);
   line_offset = ide_source_location_get_line_offset (location);
 
-  gtk_text_buffer_get_iter_at_line (buffer, &iter, line);
-  for (; line_offset; line_offset--)
-    if (gtk_text_iter_ends_line (&iter) || !gtk_text_iter_forward_char (&iter))
-      break;
+  gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, line, line_offset);
 
   gtk_text_buffer_select_range (buffer, &iter, &iter);
 
diff --git a/src/util/gb-gtk.c b/src/util/gb-gtk.c
index e1f3184..d8f2ad0 100644
--- a/src/util/gb-gtk.c
+++ b/src/util/gb-gtk.c
@@ -29,41 +29,6 @@ struct ScrollState
   gdouble      yalign;
 };
 
-/*
- * This function is like gtk_text_buffer_get_iter_at_line_offset() except that
- * the line offset does not need to exist. It will work forward as far as
- * possible on that line.
- */
-gboolean
-gb_gtk_text_buffer_get_iter_at_line_and_offset (GtkTextBuffer *buffer,
-                                                GtkTextIter   *iter,
-                                                guint          line,
-                                                guint          line_offset)
-{
-  g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), FALSE);
-  g_return_val_if_fail (iter, FALSE);
-
-  gtk_text_buffer_get_iter_at_line (buffer, iter, line);
-
-  if (gtk_text_iter_get_line (iter) == line)
-    {
-      for (; line_offset; line_offset--)
-        {
-          if (gtk_text_iter_ends_line (iter))
-            break;
-          if (!gtk_text_iter_forward_char (iter))
-            {
-              gtk_text_buffer_get_end_iter (buffer, iter);
-              break;
-            }
-        }
-
-      return (line_offset == 0);
-    }
-
-  return FALSE;
-}
-
 static gboolean
 gb_gtk_text_view_scroll_to_iter_cb (gpointer data)
 {
@@ -76,8 +41,8 @@ gb_gtk_text_view_scroll_to_iter_cb (gpointer data)
 
   buffer = gtk_text_view_get_buffer (state->view);
 
-  gb_gtk_text_buffer_get_iter_at_line_and_offset (buffer, &iter, state->line,
-                                                  state->line_offset);
+  gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, state->line,
+                                           state->line_offset);
 
   gb_gtk_text_view_scroll_to_iter (state->view, &iter, state->within_margin,
                                    state->use_align, state->xalign,
@@ -92,7 +57,7 @@ gb_gtk_text_view_scroll_to_iter_cb (gpointer data)
 /**
  * gb_gtk_text_view_scroll_to_iter:
  *
- * This function is a wrapper function for gb_gtk_text_view_scroll_to_iter()
+ * This function is a wrapper function for gtk_text_view_scroll_to_iter()
  * that will check to see if the text_view has calculated enough of it's
  * internal sizing to be able to scroll to the given iter.
  *
diff --git a/src/util/gb-gtk.h b/src/util/gb-gtk.h
index 6c5129d..6ce2b44 100644
--- a/src/util/gb-gtk.h
+++ b/src/util/gb-gtk.h
@@ -23,11 +23,6 @@
 
 G_BEGIN_DECLS
 
-gboolean gb_gtk_text_buffer_get_iter_at_line_and_offset (GtkTextBuffer *buffer,
-                                                         GtkTextIter   *iter,
-                                                         guint          line,
-                                                         guint          line_offset);
-
 void gb_gtk_text_view_scroll_to_iter (GtkTextView *text_view,
                                       GtkTextIter *iter,
                                       gdouble      within_margin,
diff --git a/tests/test-ide-source-view.c b/tests/test-ide-source-view.c
index 61254d9..4d29d3a 100644
--- a/tests/test-ide-source-view.c
+++ b/tests/test-ide-source-view.c
@@ -222,10 +222,8 @@ switch_to_buffer (IdeBuffer *buffer,
   parent = gtk_widget_get_parent (GTK_WIDGET (view));
   gtk_stack_set_visible_child (GTK_STACK (docStack), parent);
 
-  gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (buffer), &iter, line);
-  for (; line_offset; line_offset--)
-    if (gtk_text_iter_ends_line (&iter) || !gtk_text_iter_forward_char (&iter))
-      break;
+  gtk_text_buffer_get_iter_at_line_offset (GTK_TEXT_BUFFER (buffer), &iter, line, line_offset);
+
   gtk_text_buffer_select_range (GTK_TEXT_BUFFER (buffer), &iter, &iter);
   gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
                                 gtk_text_buffer_get_insert (GTK_TEXT_BUFFER (buffer)),


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