[gnome-builder] adapt to get_iter_at_line_offset new behaviour
- From: Sébastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] adapt to get_iter_at_line_offset new behaviour
- Date: Tue, 24 Nov 2015 23:08:20 +0000 (UTC)
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]