mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 13:47:35 +00:00
LibGUI: Mimic a user click when calling Button::click()
The `mimic_pressed` function was primarily used in one place, the Calculator. This patch removes quite a lot of logic duplication there. It is also profitable to a lot of other places where `click()` was called without mimicking a click.
This commit is contained in:
parent
96b3063121
commit
d4ef2e226c
5 changed files with 37 additions and 54 deletions
|
@ -131,12 +131,13 @@ void AbstractButton::mouseup_event(MouseEvent& event)
|
|||
if (event.button() == m_pressed_mouse_button && m_being_pressed) {
|
||||
bool was_auto_repeating = m_auto_repeat_timer->is_active();
|
||||
m_auto_repeat_timer->stop();
|
||||
bool was_being_pressed = m_being_pressed;
|
||||
m_was_being_pressed = m_being_pressed;
|
||||
ScopeGuard update_was_being_pressed { [this] { m_was_being_pressed = m_being_pressed; } };
|
||||
m_being_pressed = false;
|
||||
m_pressed_mouse_button = MouseButton::None;
|
||||
if (!is_checkable() || is_checked())
|
||||
repaint();
|
||||
if (was_being_pressed && !was_auto_repeating) {
|
||||
if (m_was_being_pressed && !was_auto_repeating) {
|
||||
switch (event.button()) {
|
||||
case MouseButton::Primary:
|
||||
click(event.modifiers());
|
||||
|
|
|
@ -34,6 +34,7 @@ public:
|
|||
|
||||
bool is_hovered() const { return m_hovered; }
|
||||
bool is_being_pressed() const { return m_being_pressed; }
|
||||
bool was_being_pressed() const { return m_was_being_pressed; }
|
||||
|
||||
unsigned allowed_mouse_buttons_for_pressing() const { return m_allowed_mouse_buttons_for_pressing; }
|
||||
void set_allowed_mouse_buttons_for_pressing(unsigned allowed_buttons) { m_allowed_mouse_buttons_for_pressing = allowed_buttons; }
|
||||
|
@ -66,6 +67,7 @@ private:
|
|||
bool m_checkable { false };
|
||||
bool m_hovered { false };
|
||||
bool m_being_pressed { false };
|
||||
bool m_was_being_pressed { false };
|
||||
bool m_being_keyboard_pressed { false };
|
||||
bool m_exclusive { false };
|
||||
|
||||
|
|
|
@ -136,6 +136,9 @@ void Button::click(unsigned modifiers)
|
|||
return;
|
||||
set_checked(!is_checked());
|
||||
}
|
||||
|
||||
mimic_pressed();
|
||||
|
||||
if (on_click)
|
||||
on_click(modifiers);
|
||||
if (m_action)
|
||||
|
@ -248,7 +251,7 @@ void Button::set_default(bool default_button)
|
|||
|
||||
void Button::mimic_pressed()
|
||||
{
|
||||
if (!is_being_pressed()) {
|
||||
if (!is_being_pressed() && !was_being_pressed()) {
|
||||
m_mimic_pressed = true;
|
||||
|
||||
stop_timer();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue