From ac7ceba950e3c0c692c8def0f7d562fecc3dcbd3 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Tue, 14 May 2024 05:11:07 +0200 Subject: [PATCH] Fix: Asset shelf missing deactivation if new item hidden When a new item is active, other items are only deactivated in the `set_state_active` method. This doesn't run if the new item is not displayed by the shelf for whatever reason (e.g. catalog filters). To fix this, just set the item inactive. This may be redundant with the deactivation in `set_state_active`, or it might not be, depending on whether the active item is visible. Pull Request: https://projects.blender.org/blender/blender/pulls/121589 --- .../editors/interface/views/abstract_view_item.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/interface/views/abstract_view_item.cc b/source/blender/editors/interface/views/abstract_view_item.cc index 62484c5ea4d..6c6e1cf9adb 100644 --- a/source/blender/editors/interface/views/abstract_view_item.cc +++ b/source/blender/editors/interface/views/abstract_view_item.cc @@ -86,11 +86,15 @@ void AbstractViewItem::deactivate() void AbstractViewItem::change_state_delayed() { - const std::optional should_be_active = this->should_be_active(); - if (should_be_active.has_value() && *should_be_active) { - /* Don't call #activate() here, since this reflects an external state change and therefore - * shouldn't call #on_activate(). */ - set_state_active(); + if (const std::optional should_be_active = this->should_be_active()) { + if (*should_be_active) { + /* Don't call #activate() here, since this reflects an external state change and therefore + * shouldn't call #on_activate(). */ + set_state_active(); + } + else { + is_active_ = false; + } } }