mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 03:37:43 +00:00
LibGUI: Add button handler for middle mouse clicks
This commit is contained in:
parent
18c84d2e63
commit
f9212ac02e
4 changed files with 17 additions and 0 deletions
|
@ -140,6 +140,9 @@ void AbstractButton::mouseup_event(MouseEvent& event)
|
||||||
case MouseButton::Primary:
|
case MouseButton::Primary:
|
||||||
click(event.modifiers());
|
click(event.modifiers());
|
||||||
break;
|
break;
|
||||||
|
case MouseButton::Middle:
|
||||||
|
middle_mouse_click(event.modifiers());
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ public:
|
||||||
void set_allowed_mouse_buttons_for_pressing(unsigned allowed_buttons) { m_allowed_mouse_buttons_for_pressing = allowed_buttons; }
|
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 click(unsigned modifiers = 0) = 0;
|
||||||
|
virtual void middle_mouse_click(unsigned) {};
|
||||||
virtual bool is_uncheckable() const { return true; }
|
virtual bool is_uncheckable() const { return true; }
|
||||||
|
|
||||||
int auto_repeat_interval() const { return m_auto_repeat_interval; }
|
int auto_repeat_interval() const { return m_auto_repeat_interval; }
|
||||||
|
|
|
@ -141,6 +141,17 @@ void Button::click(unsigned modifiers)
|
||||||
m_action->activate(this);
|
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)
|
void Button::context_menu_event(ContextMenuEvent& context_menu_event)
|
||||||
{
|
{
|
||||||
if (!is_enabled())
|
if (!is_enabled())
|
||||||
|
|
|
@ -30,12 +30,14 @@ public:
|
||||||
Gfx::TextAlignment text_alignment() const { return m_text_alignment; }
|
Gfx::TextAlignment text_alignment() const { return m_text_alignment; }
|
||||||
|
|
||||||
Function<void(unsigned modifiers)> on_click;
|
Function<void(unsigned modifiers)> on_click;
|
||||||
|
Function<void(unsigned modifiers)> on_middle_mouse_click;
|
||||||
Function<void(ContextMenuEvent&)> on_context_menu_request;
|
Function<void(ContextMenuEvent&)> on_context_menu_request;
|
||||||
|
|
||||||
void set_button_style(Gfx::ButtonStyle style) { m_button_style = style; }
|
void set_button_style(Gfx::ButtonStyle style) { m_button_style = style; }
|
||||||
Gfx::ButtonStyle button_style() const { return m_button_style; }
|
Gfx::ButtonStyle button_style() const { return m_button_style; }
|
||||||
|
|
||||||
virtual void click(unsigned modifiers = 0) override;
|
virtual void click(unsigned modifiers = 0) override;
|
||||||
|
virtual void middle_mouse_click(unsigned modifiers = 0) override;
|
||||||
virtual void context_menu_event(ContextMenuEvent&) override;
|
virtual void context_menu_event(ContextMenuEvent&) override;
|
||||||
|
|
||||||
Action* action() { return m_action; }
|
Action* action() { return m_action; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue