summaryrefslogtreecommitdiff
path: root/libcaja-private
diff options
context:
space:
mode:
authorJoanmarie Diggs <[email protected]>2018-04-26 16:13:50 -0400
committerlukefromdc <[email protected]>2018-05-03 15:31:47 -0400
commit99cf0cad9fc6ceb0f86066e85af242d2f46c3b88 (patch)
treed0b2a6065365c795b8a29c57912ce7e1a8a251b7 /libcaja-private
parent5e236e94cc6274dc18d88d1b86cb83c7646287fe (diff)
downloadcaja-99cf0cad9fc6ceb0f86066e85af242d2f46c3b88.tar.bz2
caja-99cf0cad9fc6ceb0f86066e85af242d2f46c3b88.tar.xz
Eliminate accessible children-changed event flood on container repopulation
When the icon container is repopulated (e.g. when using back/forward) finish_adding_new_icons is called leading to an accessible children- changed event flood. We can distinguish these unwanted notifications from desired notifications by comparing the number of new icons to add with the size of the container's icon set.
Diffstat (limited to 'libcaja-private')
-rw-r--r--libcaja-private/caja-icon-container.c6
-rw-r--r--libcaja-private/caja-icon-private.h1
2 files changed, 5 insertions, 2 deletions
diff --git a/libcaja-private/caja-icon-container.c b/libcaja-private/caja-icon-container.c
index e1db560d..cae3af44 100644
--- a/libcaja-private/caja-icon-container.c
+++ b/libcaja-private/caja-icon-container.c
@@ -7703,6 +7703,8 @@ finish_adding_new_icons (CajaIconContainer *container)
new_icons = container->details->new_icons;
container->details->new_icons = NULL;
+ container->details->is_populating_container =
+ g_list_length(new_icons) == g_hash_table_size(container->details->icon_set);
/* Position most icons (not unpositioned manual-layout icons). */
new_icons = g_list_reverse (new_icons);
@@ -9582,8 +9584,8 @@ caja_icon_container_accessible_icon_added_cb (CajaIconContainer *container,
AtkObject *atk_child;
int index;
- // We don't want to emit children_changed signals during the initial load.
- if (container->details->is_loading)
+ // We don't want to emit children_changed signals during any type of load.
+ if (container->details->is_loading || container->details->is_populating_container)
return;
icon = g_hash_table_lookup (container->details->icon_set, icon_data);
diff --git a/libcaja-private/caja-icon-private.h b/libcaja-private/caja-icon-private.h
index de74cba4..7145a3c4 100644
--- a/libcaja-private/caja-icon-private.h
+++ b/libcaja-private/caja-icon-private.h
@@ -271,6 +271,7 @@ struct CajaIconContainerDetails
GQueue* a11y_item_action_queue;
eel_boolean_bit is_loading : 1;
+ eel_boolean_bit is_populating_container : 1;
eel_boolean_bit store_layout_timestamps : 1;
eel_boolean_bit store_layout_timestamps_when_finishing_new_icons : 1;