[gedit] The filter-pattern property must return always a string.



commit 93db94d2ef2382727570056ef2b3481bb69ef9cf
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Sun Jul 4 23:23:07 2010 +0200

    The filter-pattern property must return always a string.

 plugins/filebrowser/gedit-file-browser-plugin.c |    4 +-
 plugins/filebrowser/gedit-file-browser-widget.c |   35 +++++++++++++----------
 2 files changed, 22 insertions(+), 17 deletions(-)
---
diff --git a/plugins/filebrowser/gedit-file-browser-plugin.c b/plugins/filebrowser/gedit-file-browser-plugin.c
index 6de55ce..097b907 100644
--- a/plugins/filebrowser/gedit-file-browser-plugin.c
+++ b/plugins/filebrowser/gedit-file-browser-plugin.c
@@ -625,9 +625,9 @@ gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable,
 			  plugin);
 
 	g_settings_bind (priv->settings,
-	                 "filter-pattern",
+	                 FILEBROWSER_FILTER_PATTERN,
 	                 priv->tree_widget,
-	                 "filter-pattern",
+	                 FILEBROWSER_FILTER_PATTERN,
 	                 G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET);
 
 	panel = gedit_window_get_side_panel (window);
diff --git a/plugins/filebrowser/gedit-file-browser-widget.c b/plugins/filebrowser/gedit-file-browser-widget.c
index a433251..ed44e84 100644
--- a/plugins/filebrowser/gedit-file-browser-widget.c
+++ b/plugins/filebrowser/gedit-file-browser-widget.c
@@ -368,6 +368,8 @@ gedit_file_browser_widget_finalize (GObject *object)
 
 	gdk_cursor_unref (obj->priv->busy_cursor);
 
+	g_free (obj->priv->filter_pattern_str);
+
 	G_OBJECT_CLASS (gedit_file_browser_widget_parent_class)->finalize (object);
 }
 
@@ -430,7 +432,7 @@ gedit_file_browser_widget_class_init (GeditFileBrowserWidgetClass *klass)
 					 g_param_spec_string ("filter-pattern",
 					 		      "Filter Pattern",
 					 		      "The filter pattern",
-					 		      NULL,
+					 		      "",
 					 		      G_PARAM_READWRITE));
 	g_object_class_install_property (object_class, PROP_ENABLE_DELETE,
 					 g_param_spec_boolean ("enable-delete",
@@ -1281,6 +1283,7 @@ gedit_file_browser_widget_init (GeditFileBrowserWidget *obj)
 {
 	obj->priv = GEDIT_FILE_BROWSER_WIDGET_GET_PRIVATE (obj);
 
+	obj->priv->filter_pattern_str = g_strdup ("");
 	obj->priv->bookmarks_hash = g_hash_table_new_full (g_file_hash,
 			                                   (GEqualFunc)g_file_equal,
 			                                   g_object_unref,
@@ -1780,18 +1783,25 @@ set_filter_pattern_real (GeditFileBrowserWidget *obj,
 	if (pattern != NULL && *pattern == '\0')
 		pattern = NULL;
 
-	if (pattern == NULL && obj->priv->filter_pattern_str == NULL)
+	if (pattern == NULL && *obj->priv->filter_pattern_str == '\0')
 		return;
 
-	if (pattern != NULL && obj->priv->filter_pattern_str != NULL &&
-	    strcmp (pattern, obj->priv->filter_pattern_str) == 0)
+	if (pattern != NULL && strcmp (pattern, obj->priv->filter_pattern_str) == 0)
 	{
 		return;
 	}
 
 	/* Free the old pattern */
 	g_free (obj->priv->filter_pattern_str);
-	obj->priv->filter_pattern_str = g_strdup (pattern);
+
+	if (pattern == NULL)
+	{
+		obj->priv->filter_pattern_str = g_strdup ("");
+	}
+	else
+	{
+		obj->priv->filter_pattern_str = g_strdup (pattern);
+	}
 
 	if (obj->priv->filter_pattern)
 	{
@@ -1824,18 +1834,13 @@ set_filter_pattern_real (GeditFileBrowserWidget *obj,
 
 	if (update_entry)
 	{
-		if (obj->priv->filter_pattern_str == NULL)
-		{
-			gtk_entry_set_text (GTK_ENTRY (obj->priv->filter_entry),
-			                    "");
-		}
-		else
-		{
-			gtk_entry_set_text (GTK_ENTRY (obj->priv->filter_entry),
-			                    obj->priv->filter_pattern_str);
+		gtk_entry_set_text (GTK_ENTRY (obj->priv->filter_entry),
+		                    obj->priv->filter_pattern_str);
 
+		if (obj->priv->filter_pattern_str != '\0')
+		{
 			gtk_expander_set_expanded (GTK_EXPANDER (obj->priv->filter_expander),
-		        	                   TRUE);
+			                           TRUE);
 		}
 	}
 



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