[nautilus] view: optimize real_update_menus() a bit
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] view: optimize real_update_menus() a bit
- Date: Sat, 30 Aug 2014 20:30:10 +0000 (UTC)
commit ecf99c3be6813b875c793dd474ac4e7c2c7833da
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Sat Aug 30 12:21:55 2014 -0700
view: optimize real_update_menus() a bit
Fetching the selection is expensive, and this is alreay a hot code path;
don't fetch it more than once.
src/nautilus-view.c | 36 +++++++++++-------------------------
1 files changed, 11 insertions(+), 25 deletions(-)
---
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index a224446..ee6ff9e 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -2177,19 +2177,15 @@ all_files_in_trash (GList *files)
}
static gboolean
-all_selected_items_in_trash (NautilusView *view)
+all_selected_items_in_trash (GList *selection)
{
- GList *selection;
gboolean result;
/* If the contents share a parent directory, we need only
* check that parent directory. Otherwise we have to inspect
* each selected item.
*/
- selection = nautilus_view_get_selection (view);
result = (selection == NULL) ? FALSE : all_files_in_trash (selection);
- nautilus_file_list_free (selection);
-
return result;
}
@@ -4056,18 +4052,14 @@ nautilus_view_create_links_for_files (NautilusView *view, GList *files,
*/
static gboolean
-special_link_in_selection (NautilusView *view)
+special_link_in_selection (GList *selection)
{
gboolean saw_link;
- GList *selection, *node;
+ GList *node;
NautilusFile *file;
- g_return_val_if_fail (NAUTILUS_IS_VIEW (view), FALSE);
-
saw_link = FALSE;
- selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
-
for (node = selection; node != NULL; node = node->next) {
file = NAUTILUS_FILE (node->data);
@@ -4078,8 +4070,6 @@ special_link_in_selection (NautilusView *view)
}
}
- nautilus_file_list_free (selection);
-
return saw_link;
}
@@ -4089,18 +4079,14 @@ special_link_in_selection (NautilusView *view)
*/
static gboolean
-desktop_or_home_dir_in_selection (NautilusView *view)
+desktop_or_home_dir_in_selection (GList *selection)
{
gboolean saw_desktop_or_home_dir;
- GList *selection, *node;
+ GList *node;
NautilusFile *file;
- g_return_val_if_fail (NAUTILUS_IS_VIEW (view), FALSE);
-
saw_desktop_or_home_dir = FALSE;
- selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
-
for (node = selection; node != NULL; node = node->next) {
file = NAUTILUS_FILE (node->data);
@@ -4113,8 +4099,6 @@ desktop_or_home_dir_in_selection (NautilusView *view)
}
}
- nautilus_file_list_free (selection);
-
return saw_desktop_or_home_dir;
}
@@ -8410,6 +8394,7 @@ real_update_menus (NautilusView *view)
gboolean selection_contains_desktop_or_home_dir;
gboolean selection_contains_recent;
gboolean selection_contains_search;
+ gboolean selection_all_in_trash;
gboolean can_create_files;
gboolean can_delete_files;
gboolean can_move_files;
@@ -8433,11 +8418,12 @@ real_update_menus (NautilusView *view)
selection = nautilus_view_get_selection (view);
selection_count = g_list_length (selection);
- selection_contains_special_link = special_link_in_selection (view);
- selection_contains_desktop_or_home_dir = desktop_or_home_dir_in_selection (view);
+ selection_contains_special_link = special_link_in_selection (selection);
+ selection_contains_desktop_or_home_dir = desktop_or_home_dir_in_selection (selection);
selection_contains_recent = showing_recent_directory (view);
selection_contains_search = view->details->model &&
NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model);
+ selection_all_in_trash = all_selected_items_in_trash (selection);
can_create_files = nautilus_view_supports_creating_files (view);
can_delete_files =
@@ -8625,7 +8611,7 @@ real_update_menus (NautilusView *view)
reset_open_with_menu (view, selection);
reset_extension_actions_menu (view, selection);
- if (all_selected_items_in_trash (view)) {
+ if (selection_all_in_trash) {
label = _("_Delete Permanently");
tip = _("Delete all selected items permanently");
show_separate_delete_command = FALSE;
@@ -8640,7 +8626,7 @@ real_update_menus (NautilusView *view)
g_object_set (action,
"label", label,
"tooltip", tip,
- "icon-name", all_selected_items_in_trash (view) ?
+ "icon-name", selection_all_in_trash ?
NAUTILUS_ICON_DELETE : NAUTILUS_ICON_TRASH_FULL,
NULL);
/* if the backend supports delete but not trash then don't show trash */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]