[gtksourceview] SearchContext: fix regex-error and regex-state consistency



commit c525a78164fb1e7ea36a13354e0c28ce73a742ab
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sat Aug 24 19:11:20 2013 +0200

    SearchContext: fix regex-error and regex-state consistency

 gtksourceview/gtksourcesearchcontext.c |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)
---
diff --git a/gtksourceview/gtksourcesearchcontext.c b/gtksourceview/gtksourcesearchcontext.c
index deed7d8..1a392df 100644
--- a/gtksourceview/gtksourcesearchcontext.c
+++ b/gtksourceview/gtksourcesearchcontext.c
@@ -519,6 +519,9 @@ clear_task (GtkSourceSearchContext *search)
 static void
 clear_search (GtkSourceSearchContext *search)
 {
+       gboolean regex_state_changed = FALSE;
+       gboolean regex_error_changed = FALSE;
+
        if (search->priv->scan_region != NULL)
        {
                gtk_text_region_destroy (search->priv->scan_region, TRUE);
@@ -541,12 +544,25 @@ clear_search (GtkSourceSearchContext *search)
        {
                g_error_free (search->priv->regex_error);
                search->priv->regex_error = NULL;
-               g_object_notify (G_OBJECT (search), "regex-error");
+               regex_error_changed = TRUE;
        }
 
        if (search->priv->regex_state != GTK_SOURCE_REGEX_SEARCH_NO_ERROR)
        {
                search->priv->regex_state = GTK_SOURCE_REGEX_SEARCH_NO_ERROR;
+               regex_state_changed = TRUE;
+       }
+
+       /* Notify the regex-error and the regex-state after clearing both
+        * values, to be in a consistent state.
+        */
+       if (regex_error_changed)
+       {
+               g_object_notify (G_OBJECT (search), "regex-error");
+       }
+
+       if (regex_state_changed)
+       {
                g_object_notify (G_OBJECT (search), "regex-state");
        }
 


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