Fixed mouse selecting of menu item when it was deselected via keyboard.

This commit is contained in:
23rd 2021-01-20 00:12:46 +03:00
parent 70aa4833b7
commit 912f0b48a6

View file

@ -22,6 +22,7 @@ void ItemBase::setSelected(
return; return;
} }
if (_selected.current() != selected) { if (_selected.current() != selected) {
setMouseTracking(!selected);
_lastTriggeredSource = source; _lastTriggeredSource = source;
_selected = selected; _selected = selected;
update(); update();
@ -112,9 +113,10 @@ void ItemBase::enableMouseSelecting() {
) | rpl::filter([=](not_null<QEvent*> e) { ) | rpl::filter([=](not_null<QEvent*> e) {
return action()->isEnabled() return action()->isEnabled()
&& ((e->type() == QEvent::Leave) && ((e->type() == QEvent::Leave)
|| (e->type() == QEvent::Enter)); || (e->type() == QEvent::Enter)
|| (e->type() == QEvent::MouseMove));
}) | rpl::map([=](not_null<QEvent*> e) { }) | rpl::map([=](not_null<QEvent*> e) {
return (e->type() == QEvent::Enter); return (e->type() != QEvent::Leave);
}) | rpl::start_with_next([=](bool selected) { }) | rpl::start_with_next([=](bool selected) {
setSelected(selected); setSelected(selected);
}, lifetime()); }, lifetime());