gtk+ r19837 - trunk/gtk
- From: federico svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r19837 - trunk/gtk
- Date: Thu, 13 Mar 2008 00:41:38 +0000 (GMT)
Author: federico
Date: Thu Mar 13 00:41:38 2008
New Revision: 19837
URL: http://svn.gnome.org/viewvc/gtk+?rev=19837&view=rev
Log:
Scan the completion store again to look for complete-but-not-unique matches
Signed-off-by: Federico Mena Quintero <federico gnu org>
Modified:
trunk/gtk/gtkfilechooserentry.c
Modified: trunk/gtk/gtkfilechooserentry.c
==============================================================================
--- trunk/gtk/gtkfilechooserentry.c (original)
+++ trunk/gtk/gtkfilechooserentry.c Thu Mar 13 00:41:38 2008
@@ -477,6 +477,10 @@
&& chooser_entry->current_folder_path != NULL
&& gtk_file_path_compare (parsed_folder_path, chooser_entry->current_folder_path) == 0);
+ gtk_file_path_free (parsed_folder_path);
+
+ /* First pass: find the common prefix */
+
valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
while (valid)
@@ -501,16 +505,13 @@
{
gchar *p = *common_prefix_ret;
const gchar *q = display_name;
-
+
while (*p && *p == *q)
{
p++;
q++;
}
- if (*p == '\0' || *q == '\0')
- *is_complete_not_unique_ret = TRUE;
-
*p = '\0';
gtk_file_path_free (*unique_path_ret);
@@ -523,7 +524,35 @@
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
}
- gtk_file_path_free (parsed_folder_path);
+ /* Second pass: see if the prefix we found is a complete match */
+
+ if (*common_prefix_ret != NULL)
+ {
+ valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
+
+ while (valid)
+ {
+ gchar *display_name;
+ int len;
+
+ gtk_tree_model_get (GTK_TREE_MODEL (chooser_entry->completion_store),
+ &iter,
+ DISPLAY_NAME_COLUMN, &display_name,
+ -1);
+ len = strlen (display_name);
+ g_assert (len > 0);
+
+ if (G_IS_DIR_SEPARATOR (display_name[len - 1]))
+ len--;
+
+ if (strncmp (*common_prefix_ret, display_name, len) == 0)
+ *is_complete_not_unique_ret = TRUE;
+
+ g_free (display_name);
+ valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
+ }
+ }
+
g_free (parsed_file_part);
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]