[nautilus] canvas-item: optimize ref_state_set()
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] canvas-item: optimize ref_state_set()
- Date: Wed, 3 Sep 2014 23:31:51 +0000 (UTC)
commit d7bf9bad98f36ff3584d92d8953f725a892a882b
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Wed Sep 3 16:30:08 2014 -0700
canvas-item: optimize ref_state_set()
We don't need to iterate over all the icons to find out whether we're
the only selected one.
libnautilus-private/nautilus-canvas-item.c | 27 ++++++---------------------
1 files changed, 6 insertions(+), 21 deletions(-)
---
diff --git a/libnautilus-private/nautilus-canvas-item.c b/libnautilus-private/nautilus-canvas-item.c
index 8bd40db..7e5d542 100644
--- a/libnautilus-private/nautilus-canvas-item.c
+++ b/libnautilus-private/nautilus-canvas-item.c
@@ -2554,8 +2554,7 @@ nautilus_canvas_item_accessible_ref_state_set (AtkObject *accessible)
AtkStateSet *state_set;
NautilusCanvasItem *item;
NautilusCanvasContainer *container;
- NautilusCanvasIcon *icon;
- GList *l;
+ GList *selection;
gboolean one_item_selected;
state_set = ATK_OBJECT_CLASS (nautilus_canvas_item_accessible_parent_class)->ref_state_set
(accessible);
@@ -2569,29 +2568,15 @@ nautilus_canvas_item_accessible_ref_state_set (AtkObject *accessible)
if (item->details->is_highlighted_as_keyboard_focus) {
atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
} else if (!container->details->keyboard_focus) {
-
- one_item_selected = FALSE;
- l = container->details->icons;
- while (l) {
- icon = l->data;
-
- if (icon->item == item) {
- if (icon->is_selected) {
- one_item_selected = TRUE;
- } else {
- break;
- }
- } else if (icon->is_selected) {
- one_item_selected = FALSE;
- break;
- }
-
- l = l->next;
- }
+ selection = nautilus_canvas_container_get_selection (container);
+ one_item_selected = (g_list_length (selection) == 1) &&
+ item->details->is_highlighted_for_selection;
if (one_item_selected) {
atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
}
+
+ g_list_free (selection);
}
return state_set;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]