[gnome-builder/gnome-builder-3-18] source-view: honor search-direction when doing rubberband search



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]