PopupButton - не вызывается метод refreshState для вложенных Action

Добрый день!
Jmix version: 1.4.1
Jmix Studio plugin version: 1.4.1-222
IntelliJ version: IntelliJ IDEA 2022.2.3 (Community Edition)

Заметил, что при открытии списка вложенных в PopupButton экшенов не вызывается их метод refreshState().
Из-за этого экшены всегда активны.
Если в событии PopupButton.PopupVisibilityEvent принудительно вызвать у всех вложенных экшенов метод refreshState(), то все работает.

Добрый день.

refreshState() и не должен вызываться. Приведу аналогию с таблицей. Действия добавленные в таблицу показываются в контекстном меню таблицы, но они не делаются неактивными, если контекстное меню скрыто или становятся активными, если контекстное меню показывается. Состояние действий зависит от выделения строки в таблице. Ситуация с PopupButton такая же. Состояние действий явно не зависит от того, открыт ли popup или нет, а от внешних условий, например выделена ли строка в той же таблице. Более того, правильнее если действие подпишется на событие связанного компонента и будет менять свое состояние, т.к. действие лучше знает на что нужно реагировать.

Глеб

1 симпатия

Состояния моих действий в popupbutton зависят от выделенных строк в таблице.
Т.е. все эти действия должны быть подписаны на событие Table.SelectionEvent и менять свое состояние в обработчике этого события?

Да, именно так

Спасибо!