gtk+ r19798 - trunk/gtk



Author: federico
Date: Thu Mar 13 00:25:50 2008
New Revision: 19798
URL: http://svn.gnome.org/viewvc/gtk+?rev=19798&view=rev

Log:
Find the common prefix based on the cursor position

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:25:50 2008
@@ -413,8 +413,13 @@
 		    gchar               **common_prefix_ret,
 		    GtkFilePath         **unique_path_ret)
 {
+  GtkEditable *editable;
   GtkTreeIter iter;
+  gboolean parsed;
   gboolean valid;
+  char *text_up_to_cursor;
+  GtkFilePath *parsed_folder_path;
+  char *parsed_file_part;
 
   *common_prefix_ret = NULL;
   *unique_path_ret = NULL;
@@ -422,6 +427,22 @@
   if (chooser_entry->completion_store == NULL)
     return;
 
+  editable = GTK_EDITABLE (chooser_entry);
+
+  text_up_to_cursor = gtk_editable_get_chars (editable, 0, gtk_editable_get_position (editable));
+
+  parsed = gtk_file_system_parse (chooser_entry->file_system,
+				  chooser_entry->base_folder,
+				  text_up_to_cursor,
+				  &parsed_folder_path,
+				  &parsed_file_part,
+				  NULL); /* NULL-GError */
+
+  g_free (text_up_to_cursor);
+
+  if (!parsed)
+    return;
+
   valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
 
   while (valid)
@@ -435,7 +456,7 @@
 			  PATH_COLUMN, &path,
 			  -1);
 
-      if (g_str_has_prefix (display_name, chooser_entry->file_part))
+      if (g_str_has_prefix (display_name, parsed_file_part))
 	{
 	  if (!*common_prefix_ret)
 	    {
@@ -464,6 +485,9 @@
       gtk_file_path_free (path);
       valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (chooser_entry->completion_store), &iter);
     }
+
+  gtk_file_path_free (parsed_folder_path);
+  g_free (parsed_file_part);
 }
 
 /* Finds a common prefix based on the contents of the entry and mandatorily appends it */



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