1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 22:48:11 +00:00

MouseDemo: Draw blue color for longer to indicate double click

When double-clicking, the button remains blue a bit longer. This
provides a convenient way to test the double click speed.

Piggybacks the timer for the scroll indicators, which is a bit weird,
but not noticeable.
This commit is contained in:
Andreas Oppebøen 2022-11-27 03:44:30 +01:00 committed by Sam Atkins
parent 3cf81f1930
commit 54edd162a9

View file

@ -31,6 +31,7 @@ public:
{
m_show_scroll_wheel = false;
m_double_clicked_buttons = 0;
stop_timer();
update();
}
@ -74,9 +75,11 @@ public:
painter.stroke_path(path, Color::Black, 1);
auto buttons = m_buttons | m_double_clicked_buttons;
auto primary_secondary_switched = GUI::ConnectionToWindowServer::the().get_buttons_switched();
auto primary_pressed = m_buttons & GUI::MouseButton::Primary;
auto secondary_pressed = m_buttons & GUI::MouseButton::Secondary;
auto primary_pressed = buttons & GUI::MouseButton::Primary;
auto secondary_pressed = buttons & GUI::MouseButton::Secondary;
if (primary_secondary_switched ? secondary_pressed : primary_pressed) {
auto button_color = primary_secondary_switched ? Color::LightBlue : Color::MidBlue;
@ -90,13 +93,13 @@ public:
painter.draw_triangle({ 96, 12 }, { 96, 21 }, { 132, 21 }, button_color);
}
if (m_buttons & GUI::MouseButton::Middle)
if (buttons & GUI::MouseButton::Middle)
painter.fill_rect({ 66, 13, 29, 52 }, Color::Blue);
if (m_buttons & GUI::MouseButton::Forward)
if (buttons & GUI::MouseButton::Forward)
painter.fill_rect({ 26, 44, 4, 16 }, Color::Blue);
if (m_buttons & GUI::MouseButton::Backward)
if (buttons & GUI::MouseButton::Backward)
painter.fill_rect({ 26, 71, 4, 16 }, Color::Blue);
if (m_show_scroll_wheel) {
@ -148,10 +151,20 @@ public:
start_timer(500);
}
void doubleclick_event(GUI::MouseEvent& event) override
{
m_double_clicked_buttons |= event.button();
update();
if (has_timer())
stop_timer();
start_timer(500);
}
private:
unsigned m_buttons { 0 };
unsigned m_wheel_delta_acc { 0 };
bool m_show_scroll_wheel { false };
unsigned m_double_clicked_buttons { 0 };
};
ErrorOr<int> serenity_main(Main::Arguments arguments)