]> Pileus Git - ~andy/gtk/commitdiff
Fill the location entry with the display name of the file under the cursor
authorFederico Mena Quintero <federico@ximian.com>
Thu, 25 Mar 2004 21:36:02 +0000 (21:36 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Thu, 25 Mar 2004 21:36:02 +0000 (21:36 +0000)
2004-03-25  Federico Mena Quintero  <federico@ximian.com>

* gtk/gtkfilechooserdefault.c (location_entry_create): Fill the
location entry with the display name of the file under the cursor
for Open mode, or the typed filename in Save mode.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkfilechooserdefault.c

index 78733c133d0d9984ba2abde60e7278b9898bd2d6..f96283ed1707c4125d03c816155627f344a9f7aa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-03-25  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (location_entry_create): Fill the
+       location entry with the display name of the file under the cursor
+       for Open mode, or the typed filename in Save mode.
+
 2004-03-24  J. Ali Harlow  <ali@juiblex.co.uk>
 
        * gtk/gtkfilesystemwin32.c
index 78733c133d0d9984ba2abde60e7278b9898bd2d6..f96283ed1707c4125d03c816155627f344a9f7aa 100644 (file)
@@ -1,3 +1,9 @@
+2004-03-25  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (location_entry_create): Fill the
+       location entry with the display name of the file under the cursor
+       for Open mode, or the typed filename in Save mode.
+
 2004-03-24  J. Ali Harlow  <ali@juiblex.co.uk>
 
        * gtk/gtkfilesystemwin32.c
index 78733c133d0d9984ba2abde60e7278b9898bd2d6..f96283ed1707c4125d03c816155627f344a9f7aa 100644 (file)
@@ -1,3 +1,9 @@
+2004-03-25  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (location_entry_create): Fill the
+       location entry with the display name of the file under the cursor
+       for Open mode, or the typed filename in Save mode.
+
 2004-03-24  J. Ali Harlow  <ali@juiblex.co.uk>
 
        * gtk/gtkfilesystemwin32.c
index 78733c133d0d9984ba2abde60e7278b9898bd2d6..f96283ed1707c4125d03c816155627f344a9f7aa 100644 (file)
@@ -1,3 +1,9 @@
+2004-03-25  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (location_entry_create): Fill the
+       location entry with the display name of the file under the cursor
+       for Open mode, or the typed filename in Save mode.
+
 2004-03-24  J. Ali Harlow  <ali@juiblex.co.uk>
 
        * gtk/gtkfilesystemwin32.c
index 78733c133d0d9984ba2abde60e7278b9898bd2d6..f96283ed1707c4125d03c816155627f344a9f7aa 100644 (file)
@@ -1,3 +1,9 @@
+2004-03-25  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (location_entry_create): Fill the
+       location entry with the display name of the file under the cursor
+       for Open mode, or the typed filename in Save mode.
+
 2004-03-24  J. Ali Harlow  <ali@juiblex.co.uk>
 
        * gtk/gtkfilesystemwin32.c
index bc50bfe1b97dcbe4aff05ca33b47909dbbb12330..0a74308caf1ffd18dc0c8c65f008b839fbb755b0 100644 (file)
@@ -4867,6 +4867,47 @@ _gtk_file_chooser_default_new (const char *file_system)
                        NULL);
 }
 
+/* Sets the file part of a file chooser entry from the file under the cursor */
+static void
+location_entry_set_from_list (GtkFileChooserDefault *impl,
+                             GtkFileChooserEntry   *entry)
+{
+  GtkTreePath *tree_path;
+  GtkTreeIter iter, child_iter;
+  const GtkFileInfo *info;
+  const char *name;
+
+  g_assert (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
+           || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+
+  gtk_tree_view_get_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view), &tree_path, NULL);
+  if (!tree_path)
+    return;
+
+  gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->sort_model), &iter, tree_path);
+  gtk_tree_path_free (tree_path);
+
+  gtk_tree_model_sort_convert_iter_to_child_iter (impl->sort_model, &child_iter, &iter);
+  info = _gtk_file_system_model_get_info (impl->browse_files_model, &child_iter);
+  if (!info)
+    return;
+
+  name = gtk_file_info_get_display_name (info);
+  _gtk_file_chooser_entry_set_file_part (entry, name);
+}
+
+/* Sets the file part of a file chooser entry from the Name entry in save mode */
+static void
+location_entry_set_from_save_name (GtkFileChooserDefault *impl,
+                                  GtkFileChooserEntry   *entry)
+{
+  g_assert (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+           || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
+
+  _gtk_file_chooser_entry_set_file_part (entry, gtk_entry_get_text (GTK_ENTRY (impl->save_file_name_entry)));
+}
+
 static GtkWidget *
 location_entry_create (GtkFileChooserDefault *impl)
 {
@@ -4879,6 +4920,15 @@ location_entry_create (GtkFileChooserDefault *impl)
   _gtk_file_chooser_entry_set_file_system (GTK_FILE_CHOOSER_ENTRY (entry), impl->file_system);
   _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (entry), impl->current_folder);
 
+  if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
+      || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+    location_entry_set_from_list (impl, GTK_FILE_CHOOSER_ENTRY (entry));
+  else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
+          || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+    location_entry_set_from_save_name (impl, GTK_FILE_CHOOSER_ENTRY (entry));
+  else
+    g_assert_not_reached ();
+
   return GTK_WIDGET (entry);
 }