LibGUI: Add button handler for middle mouse clicks

This commit is contained in:
networkException 2022-07-10 17:20:04 +02:00 committed by Andreas Kling
parent 18c84d2e63
commit f9212ac02e
Notes: sideshowbarker 2024-07-17 08:57:33 +09:00
4 changed files with 17 additions and 0 deletions

View File

@ -140,6 +140,9 @@ void AbstractButton::mouseup_event(MouseEvent& event)
case MouseButton::Primary:
click(event.modifiers());
break;
case MouseButton::Middle:
middle_mouse_click(event.modifiers());
break;
default:
VERIFY_NOT_REACHED();
}

View File

@ -39,6 +39,7 @@ public:
void set_allowed_mouse_buttons_for_pressing(unsigned allowed_buttons) { m_allowed_mouse_buttons_for_pressing = allowed_buttons; }
virtual void click(unsigned modifiers = 0) = 0;
virtual void middle_mouse_click(unsigned) {};
virtual bool is_uncheckable() const { return true; }
int auto_repeat_interval() const { return m_auto_repeat_interval; }

View File

@ -141,6 +141,17 @@ void Button::click(unsigned modifiers)
m_action->activate(this);
}
void Button::middle_mouse_click(unsigned int modifiers)
{
if (!is_enabled())
return;
NonnullRefPtr protector = *this;
if (on_middle_mouse_click)
on_middle_mouse_click(modifiers);
}
void Button::context_menu_event(ContextMenuEvent& context_menu_event)
{
if (!is_enabled())

View File

@ -30,12 +30,14 @@ public:
Gfx::TextAlignment text_alignment() const { return m_text_alignment; }
Function<void(unsigned modifiers)> on_click;
Function<void(unsigned modifiers)> on_middle_mouse_click;
Function<void(ContextMenuEvent&)> on_context_menu_request;
void set_button_style(Gfx::ButtonStyle style) { m_button_style = style; }
Gfx::ButtonStyle button_style() const { return m_button_style; }
virtual void click(unsigned modifiers = 0) override;
virtual void middle_mouse_click(unsigned modifiers = 0) override;
virtual void context_menu_event(ContextMenuEvent&) override;
Action* action() { return m_action; }