[gtksourceview/wip/search] Search: split set_search(), and remove start/end properties



commit 85711ced2a63b5859c1040b91623b4ae08f00038
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Mon Jun 17 19:27:09 2013 +0200

    Search: split set_search(), and remove start/end properties
    
    The start/end properties can be done later, if an application needs it.

 docs/reference/gtksourceview-3.0-sections.txt |    6 +-
 gtksourceview/gtksourcebuffer.c               |  267 ++++++---------------
 gtksourceview/gtksourcebuffer.h               |   14 +-
 gtksourceview/gtksourcesearch.c               |  332 ++++++-------------------
 gtksourceview/gtksourcesearch.h               |   23 +--
 tests/test-search.c                           |    2 +-
 6 files changed, 157 insertions(+), 487 deletions(-)
---
diff --git a/docs/reference/gtksourceview-3.0-sections.txt b/docs/reference/gtksourceview-3.0-sections.txt
index 09922f0..f87c569 100644
--- a/docs/reference/gtksourceview-3.0-sections.txt
+++ b/docs/reference/gtksourceview-3.0-sections.txt
@@ -36,8 +36,10 @@ gtk_source_buffer_iter_forward_to_context_class_toggle
 gtk_source_buffer_iter_backward_to_context_class_toggle
 gtk_source_buffer_get_undo_manager
 gtk_source_buffer_set_undo_manager
-gtk_source_buffer_set_search
-gtk_source_buffer_clear_search
+gtk_source_buffer_set_search_text
+gtk_source_buffer_get_search_text
+gtk_source_buffer_set_search_flags
+gtk_source_buffer_get_search_flags
 <SUBSECTION Standard>
 GtkSourceBufferClass
 GTK_SOURCE_IS_BUFFER
diff --git a/gtksourceview/gtksourcebuffer.c b/gtksourceview/gtksourcebuffer.c
index ec11372..f97d143 100644
--- a/gtksourceview/gtksourcebuffer.c
+++ b/gtksourceview/gtksourcebuffer.c
@@ -122,10 +122,8 @@ enum {
        PROP_LANGUAGE,
        PROP_STYLE_SCHEME,
        PROP_UNDO_MANAGER,
-       PROP_SEARCH_STRING,
-       PROP_SEARCH_FLAGS,
-       PROP_SEARCH_START,
-       PROP_SEARCH_END
+       PROP_SEARCH_TEXT,
+       PROP_SEARCH_FLAGS
 };
 
 struct _GtkSourceBufferPrivate
@@ -343,17 +341,17 @@ gtk_source_buffer_class_init (GtkSourceBufferClass *klass)
                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
        /**
-        * GtkSourceBuffer:search-string:
+        * GtkSourceBuffer:search-text:
         *
-        * A search string, or %NULL if the search is cleared.
+        * A search string, or %NULL if the search is disabled.
         *
         * Since: 3.10
         */
        g_object_class_install_property (object_class,
-                                        PROP_SEARCH_STRING,
-                                        g_param_spec_string ("search-string",
-                                                             _("Search string"),
-                                                             _("Search string"),
+                                        PROP_SEARCH_TEXT,
+                                        g_param_spec_string ("search-text",
+                                                             _("Search text"),
+                                                             _("The text to search"),
                                                              NULL,
                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
@@ -373,36 +371,6 @@ gtk_source_buffer_class_init (GtkSourceBufferClass *klass)
                                                             GTK_TEXT_SEARCH_VISIBLE_ONLY | 
GTK_TEXT_SEARCH_TEXT_ONLY,
                                                             G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
-       /**
-        * GtkSourceBuffer:search-start:
-        *
-        * The lower bound for the search, or %NULL for the start of the buffer.
-        *
-        * Since: 3.10
-        */
-       g_object_class_install_property (object_class,
-                                        PROP_SEARCH_START,
-                                        g_param_spec_object ("search-start",
-                                                             _("Search start"),
-                                                             _("Lower bound for the search"),
-                                                             GTK_TYPE_TEXT_MARK,
-                                                             G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
-       /**
-        * GtkSourceBuffer:search-end:
-        *
-        * The upper bound for the search, or %NULL for the end of the buffer.
-        *
-        * Since: 3.10
-        */
-       g_object_class_install_property (object_class,
-                                        PROP_SEARCH_END,
-                                        g_param_spec_object ("search-end",
-                                                             _("Search end"),
-                                                             _("Upper bound for the search"),
-                                                             GTK_TYPE_TEXT_MARK,
-                                                             G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
        param_types[0] = GTK_TYPE_TEXT_ITER | G_SIGNAL_TYPE_STATIC_SCOPE;
        param_types[1] = GTK_TYPE_TEXT_ITER | G_SIGNAL_TYPE_STATIC_SCOPE;
 
@@ -637,28 +605,14 @@ gtk_source_buffer_set_property (GObject      *object,
                                                            g_value_get_object (value));
                        break;
 
-               case PROP_SEARCH_STRING:
-                       _gtk_source_search_set_string (source_buffer->priv->search,
-                                                      g_value_get_string (value));
-                       _gtk_source_search_update (source_buffer->priv->search);
+               case PROP_SEARCH_TEXT:
+                       _gtk_source_search_set_text (source_buffer->priv->search,
+                                                    g_value_get_string (value));
                        break;
 
                case PROP_SEARCH_FLAGS:
                        _gtk_source_search_set_flags (source_buffer->priv->search,
                                                      g_value_get_flags (value));
-                       _gtk_source_search_update (source_buffer->priv->search);
-                       break;
-
-               case PROP_SEARCH_START:
-                       _gtk_source_search_set_start (source_buffer->priv->search,
-                                                     g_value_get_object (value));
-                       _gtk_source_search_update (source_buffer->priv->search);
-                       break;
-
-               case PROP_SEARCH_END:
-                       _gtk_source_search_set_end (source_buffer->priv->search,
-                                                   g_value_get_object (value));
-                       _gtk_source_search_update (source_buffer->priv->search);
                        break;
 
                default:
@@ -716,22 +670,14 @@ gtk_source_buffer_get_property (GObject    *object,
                        g_value_set_object (value, source_buffer->priv->undo_manager);
                        break;
 
-               case PROP_SEARCH_STRING:
-                       g_value_set_string (value, _gtk_source_search_get_string 
(source_buffer->priv->search));
+               case PROP_SEARCH_TEXT:
+                       g_value_set_string (value, _gtk_source_search_get_text (source_buffer->priv->search));
                        break;
 
                case PROP_SEARCH_FLAGS:
                        g_value_set_flags (value, _gtk_source_search_get_flags (source_buffer->priv->search));
                        break;
 
-               case PROP_SEARCH_START:
-                       g_value_set_object (value, _gtk_source_search_get_start 
(source_buffer->priv->search));
-                       break;
-
-               case PROP_SEARCH_END:
-                       g_value_set_object (value, _gtk_source_search_get_end (source_buffer->priv->search));
-                       break;
-
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                        break;
@@ -2596,164 +2542,91 @@ gtk_source_buffer_get_undo_manager (GtkSourceBuffer *buffer)
 }
 
 /**
- * gtk_source_buffer_set_search:
- * @buffer: the #GtkSourceBuffer where the search occurs.
- * @str: a search string.
- * @flags: flags affecting how the search is done.
- * @start_iter: lower bound for the search, or %NULL for the start of the buffer.
- * @end_iter: upper bound for the search, or %NULL for the end of the buffer.
- *
- * Starts a new search, defined by @str and @flags, and delimited by @start and
- * @end. To search the all @buffer, set @start and @end to %NULL.
+ * gtk_source_buffer_set_search_text:
+ * @buffer: a #GtkSourceBuffer.
+ * @text: the text to search, or %NULL to disable the search.
  *
- * The search matches will be highlighted. When the search is finished, call
- * gtk_source_buffer_clear_search().
+ * Sets the text to search. If @text is %NULL or is empty, the search will be
+ * disabled. A copy of @text will be made, so you can safely free @text after
+ * a call to this function.
  *
  * Since: 3.10
  */
 void
-gtk_source_buffer_set_search (GtkSourceBuffer    *buffer,
-                             const gchar        *str,
-                             GtkTextSearchFlags  flags,
-                             const GtkTextIter  *start_iter,
-                             const GtkTextIter  *end_iter)
+gtk_source_buffer_set_search_text (GtkSourceBuffer *buffer,
+                                  const gchar     *text)
 {
-       const gchar *cur_str;
-       GtkTextSearchFlags cur_flags;
-       GtkTextMark *cur_start_mark;
-       GtkTextMark *cur_end_mark;
-       gboolean set_start = FALSE;
-       gboolean set_end = FALSE;
+       const gchar *cur_text;
 
        g_return_if_fail (GTK_SOURCE_IS_BUFFER (buffer));
 
-       /* Update the string */
-
-       cur_str = _gtk_source_search_get_string (buffer->priv->search);
-
-       if (g_strcmp0 (cur_str, str) != 0)
-       {
-               _gtk_source_search_set_string (buffer->priv->search, str);
-               g_object_notify (G_OBJECT (buffer), "search-string");
-       }
-
-       /* Update the flags */
-
-       cur_flags = _gtk_source_search_get_flags (buffer->priv->search);
+       cur_text = _gtk_source_search_get_text (buffer->priv->search);
 
-       if (cur_flags != flags)
+       if (cur_text == NULL && (text == NULL || *text == '\0'))
        {
-               _gtk_source_search_set_flags (buffer->priv->search, flags);
-               g_object_notify (G_OBJECT (buffer), "search-flags");
-       }
-
-       /* Update the start */
-
-       cur_start_mark = _gtk_source_search_get_start (buffer->priv->search);
-
-       if (cur_start_mark != NULL)
-       {
-               if (start_iter == NULL)
-               {
-                       _gtk_source_search_set_start (buffer->priv->search, NULL);
-                       g_object_notify (G_OBJECT (buffer), "search-start");
-               }
-               else
-               {
-                       GtkTextIter cur_start_iter;
-
-                       gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (buffer),
-                                                         &cur_start_iter,
-                                                         cur_start_mark);
-
-                       if (!gtk_text_iter_equal (&cur_start_iter, start_iter))
-                       {
-                               set_start = TRUE;
-                       }
-               }
-       }
-       else if (start_iter != NULL)
-       {
-               set_start = TRUE;
+               return;
        }
 
-       if (set_start)
-       {
-               GtkTextMark *start_mark;
-
-               start_mark = gtk_text_buffer_create_mark (GTK_TEXT_BUFFER (buffer),
-                                                         NULL,
-                                                         start_iter,
-                                                         TRUE);
-
-               _gtk_source_search_set_start (buffer->priv->search, start_mark);
-               g_object_notify (G_OBJECT (buffer), "search-start");
-       }
+       _gtk_source_search_set_text (buffer->priv->search, text);
+       g_object_notify (G_OBJECT (buffer), "search-text");
+}
 
-       /* Update the end */
+/**
+ * gtk_source_buffer_get_search_text:
+ * @buffer: a #GtkSourceBuffer.
+ *
+ * Gets the text to search. The return value must not be freed.
+ *
+ * Returns: the text to search, or %NULL if the search is disabled.
+ * Since: 3.10
+ */
+const gchar *
+gtk_source_buffer_get_search_text (GtkSourceBuffer *buffer)
+{
+       g_return_val_if_fail (GTK_SOURCE_IS_BUFFER (buffer), NULL);
 
-       cur_end_mark = _gtk_source_search_get_end (buffer->priv->search);
+       return _gtk_source_search_get_text (buffer->priv->search);
+}
 
-       if (cur_end_mark != NULL)
-       {
-               if (end_iter == NULL)
-               {
-                       _gtk_source_search_set_end (buffer->priv->search, NULL);
-                       g_object_notify (G_OBJECT (buffer), "search-end");
-               }
-               else
-               {
-                       GtkTextIter cur_end_iter;
+/**
+ * gtk_source_buffer_set_search_flags:
+ * @buffer: a #GtkSourceBuffer.
+ * @flags: flags affecting how the search is done.
+ *
+ * Modifies how the search is done.
+ *
+ * Since: 3.10
+ */
+void
+gtk_source_buffer_set_search_flags (GtkSourceBuffer    *buffer,
+                                   GtkTextSearchFlags  flags)
+{
+       GtkTextSearchFlags cur_flags;
 
-                       gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (buffer),
-                                                         &cur_end_iter,
-                                                         cur_end_mark);
+       g_return_if_fail (GTK_SOURCE_IS_BUFFER (buffer));
 
-                       if (!gtk_text_iter_equal (&cur_end_iter, end_iter))
-                       {
-                               set_end = TRUE;
-                       }
-               }
-       }
-       else if (end_iter != NULL)
-       {
-               set_end = TRUE;
-       }
+       cur_flags = _gtk_source_search_get_flags (buffer->priv->search);
 
-       if (set_end)
+       if (cur_flags != flags)
        {
-               GtkTextMark *end_mark;
-
-               end_mark = gtk_text_buffer_create_mark (GTK_TEXT_BUFFER (buffer),
-                                                       NULL,
-                                                       end_iter,
-                                                       FALSE);
-
-               _gtk_source_search_set_end (buffer->priv->search, end_mark);
-               g_object_notify (G_OBJECT (buffer), "search-end");
+               _gtk_source_search_set_flags (buffer->priv->search, flags);
+               g_object_notify (G_OBJECT (buffer), "search-flags");
        }
-
-       /* Update the search */
-
-       _gtk_source_search_update (buffer->priv->search);
 }
 
 /**
- * gtk_source_buffer_clear_search:
- * @buffer: the #GtkSourceBuffer where the search occurs.
+ * gtk_source_buffer_get_search_flags:
+ * @buffer: a #GtkSourceBuffer.
  *
- * Clear the search matches highlighting.
+ * Gets the search flags.
  *
+ * Returns: the flags affecting how the search is done.
  * Since: 3.10
  */
-void
-gtk_source_buffer_clear_search (GtkSourceBuffer *buffer)
+GtkTextSearchFlags
+gtk_source_buffer_get_search_flags (GtkSourceBuffer *buffer)
 {
-       GtkTextSearchFlags flags;
-
-       g_return_if_fail (GTK_SOURCE_IS_BUFFER (buffer));
-
-       flags = _gtk_source_search_get_flags (buffer->priv->search);
+       g_return_val_if_fail (GTK_SOURCE_IS_BUFFER (buffer), 0);
 
-       gtk_source_buffer_set_search (buffer, NULL, flags, NULL, NULL);
+       return _gtk_source_search_get_flags (buffer->priv->search);
 }
diff --git a/gtksourceview/gtksourcebuffer.h b/gtksourceview/gtksourcebuffer.h
index a170862..95447d9 100644
--- a/gtksourceview/gtksourcebuffer.h
+++ b/gtksourceview/gtksourcebuffer.h
@@ -175,13 +175,15 @@ GtkSourceUndoManager      *gtk_source_buffer_get_undo_manager     (GtkSourceBuffer      
  *buffe
 void                    gtk_source_buffer_set_undo_manager     (GtkSourceBuffer        *buffer,
                                                                 GtkSourceUndoManager   *manager);
 
-void                    gtk_source_buffer_set_search           (GtkSourceBuffer        *buffer,
-                                                                const gchar            *str,
-                                                                GtkTextSearchFlags      flags,
-                                                                const GtkTextIter      *start_iter,
-                                                                const GtkTextIter      *end_iter);
+void                    gtk_source_buffer_set_search_text      (GtkSourceBuffer        *buffer,
+                                                                const gchar            *text);
 
-void                    gtk_source_buffer_clear_search         (GtkSourceBuffer        *buffer);
+const gchar            *gtk_source_buffer_get_search_text      (GtkSourceBuffer        *buffer);
+
+void                    gtk_source_buffer_set_search_flags     (GtkSourceBuffer        *buffer,
+                                                                GtkTextSearchFlags      flags);
+
+GtkTextSearchFlags      gtk_source_buffer_get_search_flags     (GtkSourceBuffer        *buffer);
 
 /* private */
 void                    _gtk_source_buffer_update_highlight    (GtkSourceBuffer        *buffer,
diff --git a/gtksourceview/gtksourcesearch.c b/gtksourceview/gtksourcesearch.c
index f9bf517..2b761b2 100644
--- a/gtksourceview/gtksourcesearch.c
+++ b/gtksourceview/gtksourcesearch.c
@@ -32,11 +32,9 @@ struct _GtkSourceSearchPrivate
        GtkTextBuffer *buffer;
 
        /* State of the search */
-       gchar *str;
-       gint str_nb_lines;
+       gchar *text;
+       gint text_nb_lines;
        GtkTextSearchFlags flags;
-       GtkTextMark *start;
-       GtkTextMark *end;
 
        /* Contains the remaining region to highlight */
        GtkTextRegion *region;
@@ -115,26 +113,60 @@ text_tag_set_highest_priority (GtkTextTag    *tag,
 }
 
 static void
-_gtk_source_search_dispose (GObject *object)
+clear_search (GtkSourceSearch *search)
 {
-       GtkSourceSearch *search = GTK_SOURCE_SEARCH (object);
+       if (search->priv->region != NULL)
+       {
+               gtk_text_region_destroy (search->priv->region, TRUE);
+               search->priv->region = NULL;
+       }
 
-       if (search->priv->start != NULL)
+       if (search->priv->found_tag != NULL)
        {
-               gtk_text_buffer_delete_mark (search->priv->buffer,
-                                            search->priv->start);
+               GtkTextIter start;
+               GtkTextIter end;
+
+               gtk_text_buffer_get_bounds (search->priv->buffer, &start, &end);
 
-               g_clear_object (&search->priv->start);
+               gtk_text_buffer_remove_tag (search->priv->buffer,
+                                           search->priv->found_tag,
+                                           &start,
+                                           &end);
        }
+}
+
+static void
+update (GtkSourceSearch *search)
+{
+       GtkTextIter start;
+       GtkTextIter end;
+
+       g_return_if_fail (GTK_SOURCE_IS_SEARCH (search));
 
-       if (search->priv->end != NULL)
+       if (dispose_has_run (search))
        {
-               gtk_text_buffer_delete_mark (search->priv->buffer,
-                                            search->priv->end);
+               return;
+       }
 
-               g_clear_object (&search->priv->end);
+       clear_search (search);
+
+       if (search->priv->text == NULL)
+       {
+               return;
        }
 
+       search->priv->region = gtk_text_region_new (search->priv->buffer);
+
+       gtk_text_buffer_get_bounds (search->priv->buffer, &start, &end);
+
+       gtk_text_region_add (search->priv->region, &start, &end);
+}
+
+static void
+_gtk_source_search_dispose (GObject *object)
+{
+       GtkSourceSearch *search = GTK_SOURCE_SEARCH (object);
+
        if (search->priv->region != NULL)
        {
                gtk_text_region_destroy (search->priv->region, TRUE);
@@ -151,7 +183,7 @@ _gtk_source_search_finalize (GObject *object)
 {
        GtkSourceSearch *search = GTK_SOURCE_SEARCH (object);
 
-       g_free (search->priv->str);
+       g_free (search->priv->text);
 
        G_OBJECT_CLASS (_gtk_source_search_parent_class)->finalize (object);
 }
@@ -171,8 +203,6 @@ static void
 _gtk_source_search_init (GtkSourceSearch *self)
 {
        self->priv = GTK_SOURCE_SEARCH_GET_PRIVATE (self);
-
-       self->priv->flags = GTK_TEXT_SEARCH_VISIBLE_ONLY | GTK_TEXT_SEARCH_TEXT_ONLY;
 }
 
 GtkSourceSearch *
@@ -189,82 +219,6 @@ _gtk_source_search_new (GtkSourceBuffer *buffer)
        return search;
 }
 
-static gchar *
-unescape_search_text (const gchar *text)
-{
-       GString *str;
-       gint length;
-       gboolean drop_prev = FALSE;
-       const gchar *cur;
-       const gchar *end;
-       const gchar *prev;
-
-       if (text == NULL)
-       {
-               return NULL;
-       }
-
-       length = strlen (text);
-
-       str = g_string_new ("");
-
-       cur = text;
-       end = text + length;
-       prev = NULL;
-
-       while (cur != end)
-       {
-               const gchar *next;
-               next = g_utf8_next_char (cur);
-
-               if (prev != NULL && *prev == '\\')
-               {
-                       switch (*cur)
-                       {
-                               case 'n':
-                                       str = g_string_append (str, "\n");
-                                       break;
-                               case 'r':
-                                       str = g_string_append (str, "\r");
-                                       break;
-                               case 't':
-                                       str = g_string_append (str, "\t");
-                                       break;
-                               case '\\':
-                                       str = g_string_append (str, "\\");
-                                       drop_prev = TRUE;
-                                       break;
-                               default:
-                                       str = g_string_append (str, "\\");
-                                       str = g_string_append_len (str, cur, next - cur);
-                                       break;
-                       }
-               }
-               else if (*cur != '\\')
-               {
-                       str = g_string_append_len (str, cur, next - cur);
-               }
-               else if (next == end && *cur == '\\')
-               {
-                       str = g_string_append (str, "\\");
-               }
-
-               if (!drop_prev)
-               {
-                       prev = cur;
-               }
-               else
-               {
-                       prev = NULL;
-                       drop_prev = FALSE;
-               }
-
-               cur = next;
-       }
-
-       return g_string_free (str, FALSE);
-}
-
 static gint
 compute_nb_of_lines (const gchar *text)
 {
@@ -302,23 +256,34 @@ compute_nb_of_lines (const gchar *text)
 }
 
 void
-_gtk_source_search_set_string (GtkSourceSearch *search,
-                              const gchar     *str)
+_gtk_source_search_set_text (GtkSourceSearch *search,
+                            const gchar     *text)
 {
        g_return_if_fail (GTK_SOURCE_IS_SEARCH (search));
-       g_return_if_fail (str == NULL || g_utf8_validate (str, -1, NULL));
+       g_return_if_fail (text == NULL || g_utf8_validate (text, -1, NULL));
+
+       g_free (search->priv->text);
+
+       if (text == NULL || *text == '\0')
+       {
+               search->priv->text = NULL;
+       }
+       else
+       {
+               search->priv->text = g_strdup (text);
+       }
+
+       search->priv->text_nb_lines = compute_nb_of_lines (search->priv->text);
 
-       g_free (search->priv->str);
-       search->priv->str = unescape_search_text (str);
-       search->priv->str_nb_lines = compute_nb_of_lines (search->priv->str);
+       update (search);
 }
 
 const gchar *
-_gtk_source_search_get_string (GtkSourceSearch *search)
+_gtk_source_search_get_text (GtkSourceSearch *search)
 {
        g_return_val_if_fail (GTK_SOURCE_IS_SEARCH (search), NULL);
 
-       return search->priv->str;
+       return search->priv->text;
 }
 
 void
@@ -328,6 +293,7 @@ _gtk_source_search_set_flags (GtkSourceSearch    *search,
        g_return_if_fail (GTK_SOURCE_IS_SEARCH (search));
 
        search->priv->flags = flags;
+       update (search);
 }
 
 GtkTextSearchFlags
@@ -338,157 +304,6 @@ _gtk_source_search_get_flags (GtkSourceSearch *search)
        return search->priv->flags;
 }
 
-void
-_gtk_source_search_set_start (GtkSourceSearch *search,
-                             GtkTextMark     *start)
-{
-       g_return_if_fail (GTK_SOURCE_IS_SEARCH (search));
-
-       if (dispose_has_run (search))
-       {
-               return;
-       }
-
-       if (start != NULL)
-       {
-               g_return_if_fail (gtk_text_mark_get_buffer (start) == search->priv->buffer);
-       }
-
-       if (search->priv->start != NULL)
-       {
-               gtk_text_buffer_delete_mark (search->priv->buffer,
-                                            search->priv->start);
-
-               g_object_unref (search->priv->start);
-       }
-
-       search->priv->start = start;
-
-       if (start != NULL)
-       {
-               g_object_ref (start);
-       }
-}
-
-GtkTextMark *
-_gtk_source_search_get_start (GtkSourceSearch *search)
-{
-       g_return_val_if_fail (GTK_SOURCE_IS_SEARCH (search), NULL);
-
-       return search->priv->start;
-}
-
-void
-_gtk_source_search_set_end (GtkSourceSearch *search,
-                           GtkTextMark     *end)
-{
-       g_return_if_fail (GTK_SOURCE_IS_SEARCH (search));
-
-       if (dispose_has_run (search))
-       {
-               return;
-       }
-
-       if (end != NULL)
-       {
-               g_return_if_fail (gtk_text_mark_get_buffer (end) == search->priv->buffer);
-       }
-
-       if (search->priv->end != NULL)
-       {
-               gtk_text_buffer_delete_mark (search->priv->buffer,
-                                            search->priv->end);
-
-               g_object_unref (search->priv->end);
-       }
-
-       search->priv->end = end;
-
-       if (end != NULL)
-       {
-               g_object_ref (end);
-       }
-}
-
-GtkTextMark *
-_gtk_source_search_get_end (GtkSourceSearch *search)
-{
-       g_return_val_if_fail (GTK_SOURCE_IS_SEARCH (search), NULL);
-
-       return search->priv->end;
-}
-
-static void
-clear_search (GtkSourceSearch *search)
-{
-       if (search->priv->region != NULL)
-       {
-               gtk_text_region_destroy (search->priv->region, TRUE);
-               search->priv->region = NULL;
-       }
-
-       if (search->priv->found_tag != NULL)
-       {
-               GtkTextIter start;
-               GtkTextIter end;
-
-               gtk_text_buffer_get_bounds (search->priv->buffer, &start, &end);
-
-               gtk_text_buffer_remove_tag (search->priv->buffer,
-                                           search->priv->found_tag,
-                                           &start,
-                                           &end);
-       }
-}
-
-/* Separate update function, so we can change several search properties at once. */
-void
-_gtk_source_search_update (GtkSourceSearch *search)
-{
-       GtkTextIter start;
-       GtkTextIter end;
-
-       g_return_if_fail (GTK_SOURCE_IS_SEARCH (search));
-
-       if (dispose_has_run (search))
-       {
-               return;
-       }
-
-       clear_search (search);
-
-       if (search->priv->str == NULL)
-       {
-               return;
-       }
-
-       search->priv->region = gtk_text_region_new (search->priv->buffer);
-
-       if (search->priv->start != NULL)
-       {
-               gtk_text_buffer_get_iter_at_mark (search->priv->buffer,
-                                                 &start,
-                                                 search->priv->start);
-       }
-       else
-       {
-               gtk_text_buffer_get_start_iter (search->priv->buffer, &start);
-       }
-
-       if (search->priv->end != NULL)
-       {
-               gtk_text_buffer_get_iter_at_mark (search->priv->buffer,
-                                                 &end,
-                                                 search->priv->end);
-       }
-       else
-       {
-               gtk_text_buffer_get_end_iter (search->priv->buffer, &end);
-       }
-
-       gtk_text_region_add (search->priv->region, &start, &end);
-}
-
 static void
 highlight_subregion (GtkSourceSearch *search,
                     GtkTextIter     *start,
@@ -507,10 +322,10 @@ highlight_subregion (GtkSourceSearch *search,
        text_tag_set_highest_priority (search->priv->found_tag,
                                       search->priv->buffer);
 
-       g_return_if_fail (search->priv->str_nb_lines > 0);
+       g_return_if_fail (search->priv->text_nb_lines > 0);
 
-       gtk_text_iter_backward_lines (start, search->priv->str_nb_lines);
-       gtk_text_iter_forward_lines (end, search->priv->str_nb_lines);
+       gtk_text_iter_backward_lines (start, search->priv->text_nb_lines);
+       gtk_text_iter_forward_lines (end, search->priv->text_nb_lines);
 
        if (gtk_text_iter_has_tag (start, search->priv->found_tag) &&
            !gtk_text_iter_begins_tag (start, search->priv->found_tag))
@@ -534,11 +349,6 @@ highlight_subregion (GtkSourceSearch *search,
                                    start,
                                    end);
 
-       if (search->priv->str[0] == '\0')
-       {
-               return;
-       }
-
        iter = *start;
 
        do
@@ -554,7 +364,7 @@ highlight_subregion (GtkSourceSearch *search,
                */
 
                found = gtk_text_iter_forward_search (&iter,
-                                                     search->priv->str,
+                                                     search->priv->text,
                                                      search->priv->flags,
                                                      &match_start,
                                                      &match_end,
diff --git a/gtksourceview/gtksourcesearch.h b/gtksourceview/gtksourcesearch.h
index d50b147..4a6e45d 100644
--- a/gtksourceview/gtksourcesearch.h
+++ b/gtksourceview/gtksourcesearch.h
@@ -57,11 +57,11 @@ G_GNUC_INTERNAL
 GtkSourceSearch *      _gtk_source_search_new                  (GtkSourceBuffer    *buffer);
 
 G_GNUC_INTERNAL
-void                   _gtk_source_search_set_string           (GtkSourceSearch    *search,
-                                                                const gchar        *str);
+void                   _gtk_source_search_set_text             (GtkSourceSearch    *search,
+                                                                const gchar        *text);
 
 G_GNUC_INTERNAL
-const gchar *          _gtk_source_search_get_string           (GtkSourceSearch    *search);
+const gchar *          _gtk_source_search_get_text             (GtkSourceSearch    *search);
 
 G_GNUC_INTERNAL
 void                   _gtk_source_search_set_flags            (GtkSourceSearch    *search,
@@ -71,23 +71,6 @@ G_GNUC_INTERNAL
 GtkTextSearchFlags     _gtk_source_search_get_flags            (GtkSourceSearch    *search);
 
 G_GNUC_INTERNAL
-void                   _gtk_source_search_set_start            (GtkSourceSearch    *search,
-                                                                GtkTextMark        *start);
-
-G_GNUC_INTERNAL
-GtkTextMark *          _gtk_source_search_get_start            (GtkSourceSearch    *search);
-
-G_GNUC_INTERNAL
-void                   _gtk_source_search_set_end              (GtkSourceSearch    *search,
-                                                                GtkTextMark        *end);
-
-G_GNUC_INTERNAL
-GtkTextMark *          _gtk_source_search_get_end              (GtkSourceSearch    *search);
-
-G_GNUC_INTERNAL
-void                   _gtk_source_search_update               (GtkSourceSearch    *search);
-
-G_GNUC_INTERNAL
 void                   _gtk_source_search_update_highlight     (GtkSourceSearch    *search,
                                                                 const GtkTextIter  *start,
                                                                 const GtkTextIter  *end,
diff --git a/tests/test-search.c b/tests/test-search.c
index 7115889..b96dbc5 100644
--- a/tests/test-search.c
+++ b/tests/test-search.c
@@ -63,7 +63,7 @@ create_window (void)
                          NULL);
 
        g_object_bind_property (search_entry, "text",
-                               source_buffer, "search-string",
+                               source_buffer, "search-text",
                                G_BINDING_DEFAULT);
 
        g_object_unref (builder);


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