SF.net SVN: geany:[5663] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Mar 31 17:58:02 UTC 2011


Revision: 5663
          http://geany.svn.sourceforge.net/geany/?rev=5663&view=rev
Author:   ntrel
Date:     2011-03-31 17:58:01 +0000 (Thu, 31 Mar 2011)

Log Message:
-----------
Don't hide directories matching hidden file extensions e.g. foo.o.
Refactor with check_object().

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/plugins/filebrowser.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2011-03-31 17:28:03 UTC (rev 5662)
+++ trunk/ChangeLog	2011-03-31 17:58:01 UTC (rev 5663)
@@ -9,6 +9,9 @@
  * plugins/filebrowser.c:
    Fix optimization for filter check when pattern is '*'.
    Use foreach_strv() instead of foreach_c_array().
+ * plugins/filebrowser.c:
+   Don't hide directories matching hidden file extensions e.g. foo.o.
+   Refactor with check_object().
 
 
 2011-03-30  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/plugins/filebrowser.c
===================================================================
--- trunk/plugins/filebrowser.c	2011-03-31 17:28:03 UTC (rev 5662)
+++ trunk/plugins/filebrowser.c	2011-03-31 17:58:01 UTC (rev 5663)
@@ -122,12 +122,8 @@
 /* Returns: whether name should be hidden. */
 static gboolean check_hidden(const gchar *filename, const gchar *base_name)
 {
-	gboolean ret = FALSE;
 	gsize len;
 
-	if (G_UNLIKELY(! NZV(base_name)))
-		return FALSE;
-
 #ifdef G_OS_WIN32
 	if (win32_check_hidden(filename))
 		return TRUE;
@@ -137,24 +133,25 @@
 #endif
 
 	len = strlen(base_name);
-	if (base_name[len - 1] == '~')
-		return TRUE;
+	return base_name[len - 1] == '~';
+}
 
-	if (hide_object_files)
-	{
-		gchar **ptr;
-		gchar **exts = g_strsplit(hidden_file_extensions, " ", -1);
 
-		foreach_strv(ptr, exts)
+static gboolean check_object(const gchar *base_name)
+{
+	gboolean ret = FALSE;
+	gchar **ptr;
+	gchar **exts = g_strsplit(hidden_file_extensions, " ", -1);
+
+	foreach_strv(ptr, exts)
+	{
+		if (g_str_has_suffix(base_name, *ptr))
 		{
-			if (g_str_has_suffix(base_name, *ptr))
-			{
-				ret = TRUE;
-				break;
-			}
+			ret = TRUE;
+			break;
 		}
-		g_strfreev(exts);
 	}
+	g_strfreev(exts);
 	return ret;
 }
 
@@ -186,6 +183,10 @@
 	const gchar *sep;
 	gboolean dir;
 
+	if (G_UNLIKELY(! NZV(name)))
+		return;
+
+	/* root directory doesn't need separator */
 	sep = (utils_str_equal(current_dir, "/")) ? "" : G_DIR_SEPARATOR_S;
 	fname = g_strconcat(current_dir, sep, name, NULL);
 	dir = g_file_test(fname, G_FILE_TEST_IS_DIR);
@@ -193,12 +194,8 @@
 	utf8_name = utils_get_utf8_from_locale(name);
 	g_free(fname);
 
-	if (! show_hidden_files && check_hidden(utf8_fullname, name))
-	{
-		g_free(utf8_name);
-		g_free(utf8_fullname);
-		return;
-	}
+	if (! show_hidden_files && check_hidden(utf8_fullname, utf8_name))
+		goto done;
 
 	if (dir)
 	{
@@ -213,12 +210,11 @@
 	}
 	else
 	{
+		if (! show_hidden_files && hide_object_files && check_object(utf8_name))
+			goto done;
 		if (check_filtered(utf8_name))
-		{
-			g_free(utf8_name);
-			g_free(utf8_fullname);
-			return;
-		}
+			goto done;
+
 		gtk_list_store_append(file_store, &iter);
 	}
 	gtk_list_store_set(file_store, &iter,
@@ -226,6 +222,7 @@
 		FILEVIEW_COLUMN_NAME, utf8_name,
 		FILEVIEW_COLUMN_FILENAME, utf8_fullname,
 		-1);
+done:
 	g_free(utf8_name);
 	g_free(utf8_fullname);
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list