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

WindowServer+LibGUI: Support the 4th and 5th mouse buttons

We'll call the "Back" and "Forward" since that's what they are normally
mapped to in some other systems.
This commit is contained in:
Andreas Kling 2020-05-02 22:07:43 +02:00
parent c5882d3a18
commit 67b92a7d5f
6 changed files with 16 additions and 0 deletions

View file

@ -257,6 +257,8 @@ enum MouseButton : u8 {
Left = 1,
Right = 2,
Middle = 4,
Back = 8,
Forward = 16,
};
class KeyEvent final : public Event {

View file

@ -178,6 +178,10 @@ MouseButton to_gmousebutton(u32 button)
return MouseButton::Right;
case 4:
return MouseButton::Middle;
case 8:
return MouseButton::Back;
case 16:
return MouseButton::Forward;
default:
ASSERT_NOT_REACHED();
break;

View file

@ -70,6 +70,8 @@ enum class MouseButton : u8 {
Left = 1,
Right = 2,
Middle = 4,
Back = 8,
Forward = 16,
};
class KeyEvent final : public Event {

View file

@ -145,6 +145,8 @@ void Screen::on_receive_mouse_data(const MousePacket& packet)
post_mousedown_or_mouseup_if_needed(MouseButton::Left);
post_mousedown_or_mouseup_if_needed(MouseButton::Right);
post_mousedown_or_mouseup_if_needed(MouseButton::Middle);
post_mousedown_or_mouseup_if_needed(MouseButton::Back);
post_mousedown_or_mouseup_if_needed(MouseButton::Forward);
if (m_cursor_location != prev_location) {
auto message = make<MouseEvent>(Event::MouseMove, m_cursor_location, buttons, MouseButton::None, m_modifiers);
Core::EventLoop::current().post_event(WindowManager::the(), move(message));

View file

@ -683,6 +683,10 @@ auto WindowManager::DoubleClickInfo::metadata_for_button(MouseButton button) ->
return m_right;
case MouseButton::Middle:
return m_middle;
case MouseButton::Back:
return m_back;
case MouseButton::Forward:
return m_forward;
default:
ASSERT_NOT_REACHED();
}

View file

@ -241,6 +241,8 @@ private:
ClickMetadata m_left;
ClickMetadata m_right;
ClickMetadata m_middle;
ClickMetadata m_back;
ClickMetadata m_forward;
};
DoubleClickInfo m_double_click_info;
int m_double_click_speed { 0 };