[gtk+] GtkFileChooser: Add a menuitem for 'sort directories first'
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkFileChooser: Add a menuitem for 'sort directories first'
- Date: Mon, 3 Nov 2014 05:03:16 +0000 (UTC)
commit 2aa3eea781ed21a02ecdf1e3c753a1ec5694d6c8
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Nov 3 00:02:13 2014 -0500
GtkFileChooser: Add a menuitem for 'sort directories first'
This has been requested repeatedly.
gtk/gtkfilechooserwidget.c | 36 +++++++++++++++++++++++++++++++++++-
1 files changed, 35 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index 984aaf0..2978597 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -216,6 +216,7 @@ struct _GtkFileChooserWidgetPrivate {
GtkWidget *browse_files_popup_menu_size_column_item;
GtkWidget *browse_files_popup_menu_copy_file_location_item;
GtkWidget *browse_files_popup_menu_visit_file_item;
+ GtkWidget *browse_files_popup_menu_sort_directories_item;
GtkWidget *browse_new_folder_button;
GtkWidget *browse_path_bar_hbox;
GtkSizeGroup *browse_path_bar_size_group;
@@ -1427,6 +1428,28 @@ show_size_column_toggled_cb (GtkCheckMenuItem *item,
priv->show_size_column);
}
+static void
+sort_directories_toggled_cb (GtkCheckMenuItem *item,
+ GtkFileChooserWidget *impl)
+{
+ GtkFileChooserWidgetPrivate *priv = impl->priv;
+ GtkTreeSortable *sortable;
+
+ priv->sort_directories_first = gtk_check_menu_item_get_active (item);
+
+ /* force resorting */
+ sortable = GTK_TREE_SORTABLE (priv->browse_files_model);
+ if (sortable == NULL)
+ return;
+
+ gtk_tree_sortable_set_sort_column_id (sortable,
+ GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID,
+ priv->sort_order);
+ gtk_tree_sortable_set_sort_column_id (sortable,
+ priv->sort_column,
+ priv->sort_order);
+}
+
/* Shows an error dialog about not being able to select a dragged file */
static void
error_selecting_dragged_file_dialog (GtkFileChooserWidget *impl,
@@ -1683,6 +1706,9 @@ file_list_build_popup_menu (GtkFileChooserWidget *impl)
priv->browse_files_popup_menu_size_column_item = file_list_add_check_menu_item (impl, _("Show _Size
Column"),
G_CALLBACK
(show_size_column_toggled_cb));
+ priv->browse_files_popup_menu_sort_directories_item = file_list_add_check_menu_item (impl, _("Sort
_Folders before Files"),
+ G_CALLBACK
(sort_directories_toggled_cb));
+
check_file_list_menu_sensitivity (impl);
}
@@ -1716,6 +1742,13 @@ file_list_update_popup_menu (GtkFileChooserWidget *impl)
priv->show_size_column);
g_signal_handlers_unblock_by_func (priv->browse_files_popup_menu_size_column_item,
G_CALLBACK (show_size_column_toggled_cb), impl);
+
+ g_signal_handlers_block_by_func (priv->browse_files_popup_menu_sort_directories_item,
+ G_CALLBACK (sort_directories_toggled_cb), impl);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (priv->browse_files_popup_menu_sort_directories_item),
+ priv->sort_directories_first);
+ g_signal_handlers_unblock_by_func (priv->browse_files_popup_menu_sort_directories_item,
+ G_CALLBACK (sort_directories_toggled_cb), impl);
}
static void
@@ -3062,10 +3095,11 @@ settings_save (GtkFileChooserWidget *impl)
g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_HIDDEN,
gtk_file_chooser_get_show_hidden (GTK_FILE_CHOOSER (impl)));
g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN, priv->show_size_column);
+ g_settings_set_boolean (settings, SETTINGS_KEY_SORT_DIRECTORIES_FIRST, priv->sort_directories_first);
g_settings_set_enum (settings, SETTINGS_KEY_SORT_COLUMN, priv->sort_column);
g_settings_set_enum (settings, SETTINGS_KEY_SORT_ORDER, priv->sort_order);
g_settings_set_int (settings, SETTINGS_KEY_SIDEBAR_WIDTH,
- gtk_paned_get_position (GTK_PANED (priv->browse_widgets_hpaned)));
+ gtk_paned_get_position (GTK_PANED (priv->browse_widgets_hpaned)));
/* Now apply the settings */
g_settings_apply (settings);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]