[anjuta] document-manager: Allow to search starting from the current position



commit b2fb9bd306bda429cf9c15e9dbbb2360fd057d5a
Author: Sébastien Granjoux <seb sfo free fr>
Date:   Fri Feb 22 22:53:17 2013 +0100

    document-manager: Allow to search starting from the current position
    
    This is useful when the search function is called on a change of the search
    entry. In this case you want to search the new text starting from the current
    position and not go to the next match.

 plugins/document-manager/action-callbacks.c |    4 ++--
 plugins/document-manager/search-box.c       |   14 ++++++++------
 plugins/document-manager/search-box.h       |    4 +++-
 plugins/document-manager/search-files.c     |    2 +-
 4 files changed, 14 insertions(+), 10 deletions(-)
---
diff --git a/plugins/document-manager/action-callbacks.c b/plugins/document-manager/action-callbacks.c
index ce00180..ad5002b 100644
--- a/plugins/document-manager/action-callbacks.c
+++ b/plugins/document-manager/action-callbacks.c
@@ -790,7 +790,7 @@ on_repeat_quicksearch (GtkAction *action, gpointer user_data)
        search_box = plugin->search_box;
 
        gtk_widget_show (search_box);
-       search_box_incremental_search (SEARCH_BOX (search_box), TRUE, TRUE);
+       search_box_incremental_search (SEARCH_BOX (search_box), TRUE, TRUE, TRUE);
 }
 
 void
@@ -804,7 +804,7 @@ on_search_previous (GtkAction *action, gpointer user_data)
        search_box = plugin->search_box;
 
        gtk_widget_show (search_box);
-       search_box_incremental_search (SEARCH_BOX (search_box), FALSE, TRUE);
+       search_box_incremental_search (SEARCH_BOX (search_box), FALSE, TRUE, TRUE);
 }
 
 void
diff --git a/plugins/document-manager/search-box.c b/plugins/document-manager/search-box.c
index 24ee19b..037f8a2 100644
--- a/plugins/document-manager/search-box.c
+++ b/plugins/document-manager/search-box.c
@@ -393,7 +393,9 @@ editor_search (IAnjutaEditor *editor,
 }
 
 gboolean
-search_box_incremental_search (SearchBox* search_box, gboolean search_forward,
+search_box_incremental_search (SearchBox* search_box,
+                               gboolean search_forward,
+                               gboolean search_next,
                                gboolean wrap)
 {
        IAnjutaIterable* real_start;
@@ -451,7 +453,7 @@ search_box_incremental_search (SearchBox* search_box, gboolean search_forward,
      * selection starts with a match, look for next match.
         */
        if (ianjuta_editor_selection_has_selection (selection,
-                                                   NULL))
+                                                   NULL) && search_next)
        {
                gchar* selected_text =
                        ianjuta_editor_selection_get (selection, NULL);
@@ -709,7 +711,7 @@ on_search_box_entry_changed (GtkWidget * widget, SearchBox * search_box)
        {
                GtkEntryBuffer* buffer = gtk_entry_get_buffer (GTK_ENTRY(widget));
                if (gtk_entry_buffer_get_length (buffer))
-                       search_box_incremental_search (search_box, TRUE, TRUE);
+                       search_box_incremental_search (search_box, TRUE, FALSE, TRUE);
                else
                {
                        /* clear selection */
@@ -729,13 +731,13 @@ on_search_box_entry_changed (GtkWidget * widget, SearchBox * search_box)
 static void
 search_box_forward_search (SearchBox * search_box, GtkWidget* widget)
 {
-       search_box_incremental_search (search_box, TRUE, TRUE);
+       search_box_incremental_search (search_box, TRUE, TRUE, TRUE);
 }
 
 static void
 on_search_box_backward_search (GtkWidget * widget, SearchBox * search_box)
 {
-       search_box_incremental_search (search_box, FALSE, TRUE);
+       search_box_incremental_search (search_box, FALSE, TRUE, TRUE);
 }
 
 static gboolean
@@ -886,7 +888,7 @@ on_replace_all_activated (GtkWidget* widget, SearchBox* search_box)
        
        /* Replace all instances of search_entry with replace_entry text */
        ianjuta_document_begin_undo_action (IANJUTA_DOCUMENT (search_box->priv->current_editor), NULL);
-       while (search_box_incremental_search (search_box, TRUE, FALSE))
+       while (search_box_incremental_search (search_box, TRUE, TRUE, FALSE))
        {
                search_box_replace (search_box, widget, FALSE);
        }
diff --git a/plugins/document-manager/search-box.h b/plugins/document-manager/search-box.h
index 30a539a..ae8ec7b 100644
--- a/plugins/document-manager/search-box.h
+++ b/plugins/document-manager/search-box.h
@@ -60,7 +60,9 @@ void search_box_fill_search_focus (SearchBox* search_box, gboolean on_replace);
 void search_box_grab_line_focus (SearchBox* search_box);
 void search_box_hide (SearchBox* search_box);
 void search_box_set_replace (SearchBox* object, gboolean replace);
-gboolean search_box_incremental_search (SearchBox* search_box, gboolean search_forward,
+gboolean search_box_incremental_search (SearchBox* search_box,
+                                        gboolean search_forward,
+                                        gboolean search_next,
                                         gboolean wrap);
 void search_box_highlight_all (SearchBox * search_box);
 
diff --git a/plugins/document-manager/search-files.c b/plugins/document-manager/search-files.c
index bff7467..a03363f 100644
--- a/plugins/document-manager/search-files.c
+++ b/plugins/document-manager/search-files.c
@@ -537,7 +537,7 @@ search_files_editor_loaded (SearchFiles* sf, IAnjutaEditor* editor)
        search_box_toggle_regex(sf->priv->search_box,
                                sf->priv->regex);
        search_box_highlight_all(sf->priv->search_box);
-       search_box_incremental_search(sf->priv->search_box, TRUE, FALSE);
+       search_box_incremental_search(sf->priv->search_box, TRUE, TRUE, FALSE);
 
        gtk_widget_show (GTK_WIDGET(sf->priv->search_box));
 }


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