Merge branch 'wip/corey/file-chooser-columns' into 'main'
File Chooser Move Column Visible to Column Header Menu See merge request GNOME/gtk!6377
This commit is contained in:
@@ -328,8 +328,6 @@ struct _GtkFileChooserWidget
|
||||
guint sort_directories_first : 1;
|
||||
guint show_time : 1;
|
||||
guint shortcuts_current_folder_active : 1;
|
||||
guint show_size_column : 1;
|
||||
guint show_type_column : 1;
|
||||
guint create_folders : 1;
|
||||
guint auto_selecting_first_row : 1;
|
||||
guint browse_files_interaction_frozen : 1;
|
||||
@@ -1421,36 +1419,6 @@ change_show_hidden_state (GSimpleAction *action,
|
||||
set_show_hidden (impl, g_variant_get_boolean (state));
|
||||
}
|
||||
|
||||
/* Callback used when the "Show Size Column" menu item is toggled */
|
||||
static void
|
||||
change_show_size_state (GSimpleAction *action,
|
||||
GVariant *state,
|
||||
gpointer data)
|
||||
{
|
||||
GtkFileChooserWidget *impl = data;
|
||||
|
||||
g_simple_action_set_state (action, state);
|
||||
impl->show_size_column = g_variant_get_boolean (state);
|
||||
|
||||
gtk_column_view_column_set_visible (impl->column_view_size_column,
|
||||
impl->show_size_column);
|
||||
}
|
||||
|
||||
/* Callback used when the "Show Type Column" menu item is toggled */
|
||||
static void
|
||||
change_show_type_state (GSimpleAction *action,
|
||||
GVariant *state,
|
||||
gpointer data)
|
||||
{
|
||||
GtkFileChooserWidget *impl = data;
|
||||
|
||||
g_simple_action_set_state (action, state);
|
||||
impl->show_type_column = g_variant_get_boolean (state);
|
||||
|
||||
gtk_column_view_column_set_visible (impl->column_view_type_column,
|
||||
impl->show_type_column);
|
||||
}
|
||||
|
||||
static void
|
||||
change_sort_directories_first_state (GSimpleAction *action,
|
||||
GVariant *state,
|
||||
@@ -1774,8 +1742,6 @@ static GActionEntry entries[] = {
|
||||
{ "trash", trash_file_cb, NULL, NULL, NULL },
|
||||
{ "popup-file-list-menu", popup_file_list_menu, "(udd)", NULL, NULL },
|
||||
{ "toggle-show-hidden", NULL, NULL, "false", change_show_hidden_state },
|
||||
{ "toggle-show-size", NULL, NULL, "false", change_show_size_state },
|
||||
{ "toggle-show-type", NULL, NULL, "false", change_show_type_state },
|
||||
{ "toggle-show-time", NULL, NULL, "false", change_show_time_state },
|
||||
{ "toggle-sort-dirs-first", NULL, NULL, "false", change_sort_directories_first_state },
|
||||
{ "toggle-view", toggle_view_cb, NULL, NULL, NULL },
|
||||
@@ -1829,21 +1795,6 @@ file_list_build_popover (GtkFileChooserWidget *impl)
|
||||
g_menu_append_item (section, item);
|
||||
g_object_unref (item);
|
||||
|
||||
item = g_menu_item_new (_("Show _Size Column"), "item.toggle-show-size");
|
||||
g_menu_item_set_attribute (item, "hidden-when", "s", "action-disabled");
|
||||
g_menu_append_item (section, item);
|
||||
g_object_unref (item);
|
||||
|
||||
item = g_menu_item_new (_("Show T_ype Column"), "item.toggle-show-type");
|
||||
g_menu_item_set_attribute (item, "hidden-when", "s", "action-disabled");
|
||||
g_menu_append_item (section, item);
|
||||
g_object_unref (item);
|
||||
|
||||
item = g_menu_item_new (_("Show _Time"), "item.toggle-show-time");
|
||||
g_menu_item_set_attribute (item, "hidden-when", "s", "action-disabled");
|
||||
g_menu_append_item (section, item);
|
||||
g_object_unref (item);
|
||||
|
||||
item = g_menu_item_new (_("Sort _Folders Before Files"), "item.toggle-sort-dirs-first");
|
||||
g_menu_append_item (section, item);
|
||||
g_object_unref (item);
|
||||
@@ -1892,16 +1843,7 @@ file_list_update_popover (GtkFileChooserWidget *impl)
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (impl->item_actions), "toggle-show-hidden");
|
||||
g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (impl->show_hidden));
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (impl->item_actions), "toggle-show-size");
|
||||
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), (impl->view_type == VIEW_TYPE_LIST));
|
||||
g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (impl->show_size_column));
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (impl->item_actions), "toggle-show-type");
|
||||
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), (impl->view_type == VIEW_TYPE_LIST));
|
||||
g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (impl->show_type_column));
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (impl->item_actions), "toggle-show-time");
|
||||
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), (impl->view_type == VIEW_TYPE_LIST));
|
||||
g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (impl->show_time));
|
||||
|
||||
action = g_action_map_lookup_action (G_ACTION_MAP (impl->item_actions), "toggle-sort-dirs-first");
|
||||
@@ -3178,8 +3120,6 @@ static void
|
||||
settings_load (GtkFileChooserWidget *impl)
|
||||
{
|
||||
gboolean show_hidden;
|
||||
gboolean show_size_column;
|
||||
gboolean show_type_column;
|
||||
gboolean sort_directories_first;
|
||||
DateFormat date_format;
|
||||
TypeFormat type_format;
|
||||
@@ -3193,8 +3133,6 @@ settings_load (GtkFileChooserWidget *impl)
|
||||
settings = _gtk_file_chooser_get_settings_for_widget (GTK_WIDGET (impl));
|
||||
|
||||
show_hidden = g_settings_get_boolean (settings, SETTINGS_KEY_SHOW_HIDDEN);
|
||||
show_size_column = g_settings_get_boolean (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN);
|
||||
show_type_column = g_settings_get_boolean (settings, SETTINGS_KEY_SHOW_TYPE_COLUMN);
|
||||
sort_column = g_settings_get_enum (settings, SETTINGS_KEY_SORT_COLUMN);
|
||||
sort_order = g_settings_get_enum (settings, SETTINGS_KEY_SORT_ORDER);
|
||||
sidebar_width = g_settings_get_int (settings, SETTINGS_KEY_SIDEBAR_WIDTH);
|
||||
@@ -3206,10 +3144,8 @@ settings_load (GtkFileChooserWidget *impl)
|
||||
|
||||
set_show_hidden (impl, show_hidden);
|
||||
|
||||
impl->show_size_column = show_size_column;
|
||||
gtk_column_view_column_set_visible (impl->column_view_size_column, show_size_column);
|
||||
impl->show_type_column = show_type_column;
|
||||
gtk_column_view_column_set_visible (impl->column_view_type_column, show_type_column);
|
||||
g_settings_bind (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN, impl->column_view_size_column, "visible", G_SETTINGS_BIND_DEFAULT);
|
||||
g_settings_bind (settings, SETTINGS_KEY_SHOW_TYPE_COLUMN, impl->column_view_type_column, "visible", G_SETTINGS_BIND_DEFAULT);
|
||||
|
||||
impl->sort_column = sort_column;
|
||||
impl->sort_order = sort_order;
|
||||
@@ -3248,8 +3184,6 @@ settings_save (GtkFileChooserWidget *impl)
|
||||
|
||||
g_settings_set_enum (settings, SETTINGS_KEY_LOCATION_MODE, impl->location_mode);
|
||||
g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_HIDDEN, impl->show_hidden);
|
||||
g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN, impl->show_size_column);
|
||||
g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_TYPE_COLUMN, impl->show_type_column);
|
||||
g_settings_set_boolean (settings, SETTINGS_KEY_SORT_DIRECTORIES_FIRST, impl->sort_directories_first);
|
||||
g_settings_set_enum (settings, SETTINGS_KEY_SORT_COLUMN, impl->sort_column);
|
||||
g_settings_set_enum (settings, SETTINGS_KEY_SORT_ORDER, impl->sort_order);
|
||||
@@ -6868,6 +6802,7 @@ post_process_ui (GtkFileChooserWidget *impl)
|
||||
GtkShortcutTrigger *trigger;
|
||||
GtkShortcutAction *action;
|
||||
GtkShortcut *shortcut;
|
||||
GAction *gaction;
|
||||
|
||||
target = gtk_drop_target_new (GDK_TYPE_FILE_LIST, GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
g_signal_connect (target, "drop", G_CALLBACK (file_list_drag_drop_cb), impl);
|
||||
@@ -6884,6 +6819,12 @@ post_process_ui (GtkFileChooserWidget *impl)
|
||||
g_action_map_add_action_entries (G_ACTION_MAP (impl->item_actions),
|
||||
entries, G_N_ELEMENTS (entries),
|
||||
impl);
|
||||
gaction = G_ACTION (g_property_action_new ("toggle-show-size", impl->column_view_size_column, "visible"));
|
||||
g_action_map_add_action (G_ACTION_MAP (impl->item_actions), gaction);
|
||||
g_object_unref (gaction);
|
||||
gaction = G_ACTION (g_property_action_new ("toggle-show-type", impl->column_view_type_column, "visible"));
|
||||
g_action_map_add_action (G_ACTION_MAP (impl->item_actions), gaction);
|
||||
g_object_unref (gaction);
|
||||
gtk_widget_insert_action_group (GTK_WIDGET (impl),
|
||||
"item",
|
||||
impl->item_actions);
|
||||
@@ -7403,6 +7344,22 @@ setup_columns (GtkColumnView *view,
|
||||
GtkFileChooserWidget *impl)
|
||||
{
|
||||
GtkListItemFactory *factory;
|
||||
GMenu *menu;
|
||||
GMenuItem *item;
|
||||
|
||||
menu = g_menu_new ();
|
||||
|
||||
item = g_menu_item_new (_("_Size"), "item.toggle-show-size");
|
||||
g_menu_append_item (menu, item);
|
||||
g_object_unref (item);
|
||||
|
||||
item = g_menu_item_new (_("T_ype"), "item.toggle-show-type");
|
||||
g_menu_append_item (menu, item);
|
||||
g_object_unref (item);
|
||||
|
||||
item = g_menu_item_new (_("_Time"), "item.toggle-show-time");
|
||||
g_menu_append_item (menu, item);
|
||||
g_object_unref (item);
|
||||
|
||||
factory = gtk_signal_list_item_factory_new ();
|
||||
g_signal_connect_swapped (factory, "bind", G_CALLBACK (bind_name_cell), impl);
|
||||
@@ -7410,6 +7367,7 @@ setup_columns (GtkColumnView *view,
|
||||
gtk_column_view_column_set_expand (impl->column_view_name_column, TRUE);
|
||||
gtk_column_view_column_set_resizable (impl->column_view_name_column, TRUE);
|
||||
gtk_column_view_append_column (view, impl->column_view_name_column);
|
||||
gtk_column_view_column_set_header_menu (impl->column_view_name_column, G_MENU_MODEL (menu));
|
||||
|
||||
factory = gtk_signal_list_item_factory_new ();
|
||||
g_signal_connect_swapped (factory, "bind", G_CALLBACK (bind_location_cell), impl);
|
||||
@@ -7418,22 +7376,28 @@ setup_columns (GtkColumnView *view,
|
||||
gtk_column_view_column_set_resizable (impl->column_view_location_column, TRUE);
|
||||
gtk_column_view_column_set_visible (impl->column_view_location_column, FALSE);
|
||||
gtk_column_view_append_column (view, impl->column_view_location_column);
|
||||
gtk_column_view_column_set_header_menu (impl->column_view_location_column, G_MENU_MODEL (menu));
|
||||
|
||||
factory = gtk_signal_list_item_factory_new ();
|
||||
g_signal_connect_swapped (factory, "bind", G_CALLBACK (bind_size_cell), impl);
|
||||
impl->column_view_size_column = gtk_column_view_column_new (_("Size"), factory);
|
||||
gtk_column_view_append_column (view, impl->column_view_size_column);
|
||||
gtk_column_view_column_set_header_menu (impl->column_view_size_column, G_MENU_MODEL (menu));
|
||||
|
||||
factory = gtk_signal_list_item_factory_new ();
|
||||
g_signal_connect_swapped (factory, "bind", G_CALLBACK (bind_type_cell), impl);
|
||||
impl->column_view_type_column = gtk_column_view_column_new (_("Type"), factory);
|
||||
gtk_column_view_column_set_resizable (impl->column_view_type_column, TRUE);
|
||||
gtk_column_view_append_column (view, impl->column_view_type_column);
|
||||
gtk_column_view_column_set_header_menu (impl->column_view_type_column, G_MENU_MODEL (menu));
|
||||
|
||||
factory = gtk_signal_list_item_factory_new ();
|
||||
g_signal_connect_swapped (factory, "bind", G_CALLBACK (bind_time_cell), impl);
|
||||
impl->column_view_time_column = gtk_column_view_column_new (_("Modified"), factory);
|
||||
gtk_column_view_append_column (view, impl->column_view_time_column);
|
||||
gtk_column_view_column_set_header_menu (impl->column_view_time_column, G_MENU_MODEL (menu));
|
||||
|
||||
g_object_unref (menu);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -7454,8 +7418,6 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
|
||||
impl->select_multiple = FALSE;
|
||||
impl->sort_directories_first = FALSE;
|
||||
impl->show_hidden = FALSE;
|
||||
impl->show_size_column = TRUE;
|
||||
impl->show_type_column = TRUE;
|
||||
impl->type_format = TYPE_FORMAT_MIME;
|
||||
impl->load_state = LOAD_EMPTY;
|
||||
impl->reload_state = RELOAD_EMPTY;
|
||||
|
||||
Reference in New Issue
Block a user