[gnome-builder/gnome-builder-3-18] source-view: honor search-direction when doing rubberband search
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/gnome-builder-3-18] source-view: honor search-direction when doing rubberband search
- Date: Tue, 13 Oct 2015 07:40:25 +0000 (UTC)
commit 850c0d58f63614dbe496e15db0f8b2cbb7574f61
Author: Ray Strode <rstrode redhat com>
Date: Sun Oct 11 14:30:28 2015 -0400
source-view: honor search-direction when doing rubberband search
Right now we always do rubberband search in the forward direction.
This commit changes it to instead search in the current search
direction.
https://bugzilla.gnome.org/show_bug.cgi?id=756405
libide/ide-source-view.c | 22 ++++++++++++++++++++--
1 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index da7f940..896f673 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -1128,12 +1128,30 @@ ide_source_view__search_settings_notify_search_text (IdeSourceView *se
GtkTextIter begin_iter;
GtkTextIter match_begin;
GtkTextIter match_end;
+ gboolean search_succeeded;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self));
gtk_text_buffer_get_iter_at_mark (buffer, &begin_iter, priv->rubberband_insert_mark);
- if (gtk_source_search_context_forward (priv->search_context, &begin_iter,
- &match_begin, &match_end))
+ switch (priv->search_direction)
+ {
+ case GTK_DIR_LEFT:
+ case GTK_DIR_UP:
+ search_succeeded = gtk_source_search_context_backward (priv->search_context, &begin_iter,
+ &match_begin, &match_end);
+ break;
+ case GTK_DIR_RIGHT:
+ case GTK_DIR_DOWN:
+ search_succeeded = gtk_source_search_context_forward (priv->search_context, &begin_iter,
+ &match_begin, &match_end);
+ break;
+ case GTK_DIR_TAB_FORWARD:
+ case GTK_DIR_TAB_BACKWARD:
+ default:
+ g_return_if_reached ();
+ }
+
+ if (search_succeeded)
{
gtk_text_buffer_move_mark (buffer, priv->rubberband_mark, &match_begin);
ide_source_view_scroll_mark_onscreen (self, priv->rubberband_mark, TRUE, 0.5, 0.5);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]