summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Miranda <andreldm@xfce.org>2020-12-16 20:34:24 -0300
committerAlexander Schwinn <alexxcons@xfce.org>2020-12-25 23:31:39 +0100
commita2535eaa2835c2119b2e943fd7fcce75e3280597 (patch)
tree36299cc0dc938d98f783b6650993368db7892b0c
parent4907c9a5b708738d55bc1f88e74b9fdbbc592f0f (diff)
downloadthunar-andreldm/thunar-issue-424.tar.gz
Add option to unselect all files (#424)andreldm/thunar-issue-424
-rw-r--r--thunar/thunar-standard-view.c53
-rw-r--r--thunar/thunar-standard-view.h3
-rw-r--r--thunar/thunar-window.c2
3 files changed, 43 insertions, 15 deletions
diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index 01dabb11..fea8e4f6 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -168,6 +168,7 @@ static void thunar_standard_view_set_selected_files_view (Thu
static void thunar_standard_view_select_all_files (ThunarView *view);
static void thunar_standard_view_select_by_pattern (ThunarView *view);
static void thunar_standard_view_selection_invert (ThunarView *view);
+static void thunar_standard_view_unselect_all_files (ThunarView *view);
static GClosure *thunar_standard_view_new_files_closure (ThunarStandardView *standard_view,
GtkWidget *source_view);
static void thunar_standard_view_new_files (ThunarStandardView *standard_view,
@@ -360,17 +361,18 @@ struct _ThunarStandardViewPrivate
static XfceGtkActionEntry thunar_standard_view_action_entries[] =
{
- { THUNAR_STANDARD_VIEW_ACTION_SELECT_ALL_FILES, "<Actions>/ThunarStandardView/select-all-files", "<Primary>a", XFCE_GTK_MENU_ITEM, N_ ("Select _all Files"), N_ ("Select all files in this window"), NULL, G_CALLBACK (thunar_standard_view_select_all_files), },
- { THUNAR_STANDARD_VIEW_ACTION_SELECT_BY_PATTERN, "<Actions>/ThunarStandardView/select-by-pattern", "<Primary>s", XFCE_GTK_MENU_ITEM, N_ ("Select _by Pattern..."), N_ ("Select all files that match a certain pattern"), NULL, G_CALLBACK (thunar_standard_view_select_by_pattern), },
- { THUNAR_STANDARD_VIEW_ACTION_INVERT_SELECTION, "<Actions>/ThunarStandardView/invert-selection", "", XFCE_GTK_MENU_ITEM, N_ ("_Invert Selection"), N_ ("Select all files but not those currently selected"), NULL, G_CALLBACK (thunar_standard_view_selection_invert), },
- { THUNAR_STANDARD_VIEW_ACTION_ARRANGE_ITEMS_MENU,"<Actions>/ThunarStandardView/arrange-items-menu", "", XFCE_GTK_MENU_ITEM, N_ ("Arran_ge Items"), NULL, NULL, G_CALLBACK (NULL), },
- { THUNAR_STANDARD_VIEW_ACTION_SORT_ORDER_TOGGLE, "<Actions>/ThunarStandardView/toggle-sort-order", "", XFCE_GTK_MENU_ITEM , N_ ("Toggle sort direction"), N_("Toggle Ascending/Descending sort order"), NULL, G_CALLBACK (thunar_standard_view_toggle_sort_order), },
- { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_NAME, "<Actions>/ThunarStandardView/sort-by-name", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By _Name"), N_ ("Keep items sorted by their name"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_name), },
- { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_SIZE, "<Actions>/ThunarStandardView/sort-by-size", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By _Size"), N_ ("Keep items sorted by their size"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_size), },
- { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_TYPE, "<Actions>/ThunarStandardView/sort-by-type", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By _Type"), N_ ("Keep items sorted by their type"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_type), },
- { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_MTIME, "<Actions>/ThunarStandardView/sort-by-mtime", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By Modification _Date"), N_ ("Keep items sorted by their modification date"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_date), },
- { THUNAR_STANDARD_VIEW_ACTION_SORT_ASCENDING, "<Actions>/ThunarStandardView/sort-ascending", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("_Ascending"), N_ ("Sort items in ascending order"), NULL, G_CALLBACK (thunar_standard_view_action_sort_ascending), },
- { THUNAR_STANDARD_VIEW_ACTION_SORT_DESCENDING, "<Actions>/ThunarStandardView/sort-descending", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("_Descending"), N_ ("Sort items in descending order"), NULL, G_CALLBACK (thunar_standard_view_action_sort_descending), },
+ { THUNAR_STANDARD_VIEW_ACTION_SELECT_ALL_FILES, "<Actions>/ThunarStandardView/select-all-files", "<Primary>a", XFCE_GTK_MENU_ITEM, N_ ("Select _all Files"), N_ ("Select all files in this window"), NULL, G_CALLBACK (thunar_standard_view_select_all_files), },
+ { THUNAR_STANDARD_VIEW_ACTION_SELECT_BY_PATTERN, "<Actions>/ThunarStandardView/select-by-pattern", "<Primary>s", XFCE_GTK_MENU_ITEM, N_ ("Select _by Pattern..."), N_ ("Select all files that match a certain pattern"), NULL, G_CALLBACK (thunar_standard_view_select_by_pattern), },
+ { THUNAR_STANDARD_VIEW_ACTION_INVERT_SELECTION, "<Actions>/ThunarStandardView/invert-selection", "", XFCE_GTK_MENU_ITEM, N_ ("_Invert Selection"), N_ ("Select all files but not those currently selected"), NULL, G_CALLBACK (thunar_standard_view_selection_invert), },
+ { THUNAR_STANDARD_VIEW_ACTION_UNSELECT_ALL_FILES, "<Actions>/ThunarStandardView/unselect-all-files", "Escape", XFCE_GTK_MENU_ITEM, N_ ("U_nselect all Files"), N_ ("Unselect all files in this window"), NULL, G_CALLBACK (thunar_standard_view_unselect_all_files), },
+ { THUNAR_STANDARD_VIEW_ACTION_ARRANGE_ITEMS_MENU, "<Actions>/ThunarStandardView/arrange-items-menu", "", XFCE_GTK_MENU_ITEM, N_ ("Arran_ge Items"), NULL, NULL, G_CALLBACK (NULL), },
+ { THUNAR_STANDARD_VIEW_ACTION_SORT_ORDER_TOGGLE, "<Actions>/ThunarStandardView/toggle-sort-order", "", XFCE_GTK_MENU_ITEM , N_ ("Toggle sort direction"), N_("Toggle Ascending/Descending sort order"), NULL, G_CALLBACK (thunar_standard_view_toggle_sort_order), },
+ { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_NAME, "<Actions>/ThunarStandardView/sort-by-name", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By _Name"), N_ ("Keep items sorted by their name"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_name), },
+ { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_SIZE, "<Actions>/ThunarStandardView/sort-by-size", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By _Size"), N_ ("Keep items sorted by their size"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_size), },
+ { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_TYPE, "<Actions>/ThunarStandardView/sort-by-type", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By _Type"), N_ ("Keep items sorted by their type"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_type), },
+ { THUNAR_STANDARD_VIEW_ACTION_SORT_BY_MTIME, "<Actions>/ThunarStandardView/sort-by-mtime", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("By Modification _Date"), N_ ("Keep items sorted by their modification date"), NULL, G_CALLBACK (thunar_standard_view_action_sort_by_date), },
+ { THUNAR_STANDARD_VIEW_ACTION_SORT_ASCENDING, "<Actions>/ThunarStandardView/sort-ascending", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("_Ascending"), N_ ("Sort items in ascending order"), NULL, G_CALLBACK (thunar_standard_view_action_sort_ascending), },
+ { THUNAR_STANDARD_VIEW_ACTION_SORT_DESCENDING, "<Actions>/ThunarStandardView/sort-descending", "", XFCE_GTK_RADIO_MENU_ITEM, N_ ("_Descending"), N_ ("Sort items in descending order"), NULL, G_CALLBACK (thunar_standard_view_action_sort_descending), },
};
#define get_action_entry(id) xfce_gtk_get_action_entry_by_id(thunar_standard_view_action_entries,G_N_ELEMENTS(thunar_standard_view_action_entries),id)
@@ -2261,6 +2263,22 @@ thunar_standard_view_selection_invert (ThunarView *view)
+static void
+thunar_standard_view_unselect_all_files (ThunarView *view)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (view);
+
+ _thunar_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* grab the focus to the view */
+ gtk_widget_grab_focus (GTK_WIDGET (standard_view));
+
+ /* unselect all files in the real view */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->unselect_all) (standard_view);
+}
+
+
+
static GClosure*
thunar_standard_view_new_files_closure (ThunarStandardView *standard_view,
GtkWidget *source_view)
@@ -3933,14 +3951,21 @@ thunar_standard_view_append_menu_items (ThunarStandardView *standard_view,
*
* Return value: (transfer none): The added #GtkMenuItem
**/
-void
+GtkWidget *
thunar_standard_view_append_menu_item (ThunarStandardView *standard_view,
GtkMenu *menu,
ThunarStandardViewAction action)
{
- _thunar_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+ GtkWidget *item;
+
+ _thunar_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), NULL);
+
+ item = xfce_gtk_menu_item_new_from_action_entry (get_action_entry (action), G_OBJECT (standard_view), GTK_MENU_SHELL (menu));
+
+ if (action == THUNAR_STANDARD_VIEW_ACTION_UNSELECT_ALL_FILES)
+ gtk_widget_set_sensitive (item, standard_view->priv->selected_files != NULL);
- xfce_gtk_menu_item_new_from_action_entry (get_action_entry (action), G_OBJECT (standard_view), GTK_MENU_SHELL (menu));
+ return item;
}
diff --git a/thunar/thunar-standard-view.h b/thunar/thunar-standard-view.h
index 3ba4938c..55f8b7eb 100644
--- a/thunar/thunar-standard-view.h
+++ b/thunar/thunar-standard-view.h
@@ -46,6 +46,7 @@ typedef enum
THUNAR_STANDARD_VIEW_ACTION_SELECT_ALL_FILES,
THUNAR_STANDARD_VIEW_ACTION_SELECT_BY_PATTERN,
THUNAR_STANDARD_VIEW_ACTION_INVERT_SELECTION,
+ THUNAR_STANDARD_VIEW_ACTION_UNSELECT_ALL_FILES,
THUNAR_STANDARD_VIEW_ACTION_ARRANGE_ITEMS_MENU,
THUNAR_STANDARD_VIEW_ACTION_SORT_BY_NAME,
THUNAR_STANDARD_VIEW_ACTION_SORT_BY_SIZE,
@@ -169,7 +170,7 @@ ThunarHistory *thunar_standard_view_copy_history (ThunarStandardView
void thunar_standard_view_append_menu_items (ThunarStandardView *standard_view,
GtkMenu *menu,
GtkAccelGroup *accel_group);
-void thunar_standard_view_append_menu_item (ThunarStandardView *standard_view,
+GtkWidget *thunar_standard_view_append_menu_item (ThunarStandardView *standard_view,
GtkMenu *menu,
ThunarStandardViewAction action);
void _thunar_standard_view_open_on_middle_click (ThunarStandardView *standard_view,
diff --git a/thunar/thunar-window.c b/thunar/thunar-window.c
index ea3affc6..06f629cb 100644
--- a/thunar/thunar-window.c
+++ b/thunar/thunar-window.c
@@ -972,6 +972,8 @@ thunar_window_update_edit_menu (ThunarWindow *window,
GTK_MENU (menu), THUNAR_STANDARD_VIEW_ACTION_SELECT_BY_PATTERN);
thunar_standard_view_append_menu_item (THUNAR_STANDARD_VIEW (window->view),
GTK_MENU (menu), THUNAR_STANDARD_VIEW_ACTION_INVERT_SELECTION);
+ thunar_standard_view_append_menu_item (THUNAR_STANDARD_VIEW (window->view),
+ GTK_MENU (menu), THUNAR_STANDARD_VIEW_ACTION_UNSELECT_ALL_FILES);
}
xfce_gtk_menu_append_seperator (GTK_MENU_SHELL (menu));
thunar_menu_add_sections (THUNAR_MENU (menu), THUNAR_MENU_SECTION_DUPLICATE