Moved mouse selecting of menu items to menu base item.

This commit is contained in:
23rd 2021-01-14 01:47:47 +03:00
parent 4325eb2f1b
commit 0d6a0d9cef
3 changed files with 16 additions and 17 deletions

View file

@ -71,23 +71,7 @@ Action::Action(
paint(p);
}, lifetime());
events(
) | rpl::filter([=](not_null<QEvent*> e) {
return _action->isEnabled()
&& ((e->type() == QEvent::Leave)
|| (e->type() == QEvent::Enter));
}) | rpl::map([=](not_null<QEvent*> e) {
return (e->type() == QEvent::Enter);
}) | rpl::start_with_next([=](bool selected) {
setSelected(selected);
}, lifetime());
events(
) | rpl::filter([=](not_null<QEvent*> e) {
return _action->isEnabled() && (e->type() == QEvent::MouseMove);
}) | rpl::start_with_next([=](not_null<QEvent*> e) {
setSelected(true);
}, lifetime());
enableMouseSelecting();
connect(_action, &QAction::changed, [=] { processAction(); });
}

View file

@ -115,4 +115,17 @@ void ItemBase::finishAnimating() {
RippleButton::finishAnimating();
}
void ItemBase::enableMouseSelecting() {
events(
) | rpl::filter([=](not_null<QEvent*> e) {
return action()->isEnabled()
&& ((e->type() == QEvent::Leave)
|| (e->type() == QEvent::Enter));
}) | rpl::map([=](not_null<QEvent*> e) {
return (e->type() == QEvent::Enter);
}) | rpl::start_with_next([=](bool selected) {
setSelected(selected);
}, lifetime());
}
} // namespace Ui::Menu

View file

@ -48,6 +48,8 @@ protected:
void init();
void initResizeHook(rpl::producer<QSize> &&size);
void enableMouseSelecting();
virtual int contentHeight() const = 0;
private: