summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-09-28 15:39:35 +0200
committerAndreas Kling <kling@serenityos.org>2021-09-28 16:56:24 +0200
commit0af0ee42936f2268c223760357d34a5249e67af0 (patch)
treed8fe2ff906121743fcf44e68f887c1336638d967 /Userland/Libraries/LibWeb
parent554c344ffeebc29c4d899b0a60813753a8c80093 (diff)
downloadserenity-0af0ee42936f2268c223760357d34a5249e67af0.zip
LibWeb: Fire "keyup" events as well :^)
This was easy, now that we have KeyboardEvent.
Diffstat (limited to 'Userland/Libraries/LibWeb')
-rw-r--r--Userland/Libraries/LibWeb/OutOfProcessWebView.cpp5
-rw-r--r--Userland/Libraries/LibWeb/OutOfProcessWebView.h1
-rw-r--r--Userland/Libraries/LibWeb/Page/EventHandler.cpp7
-rw-r--r--Userland/Libraries/LibWeb/Page/EventHandler.h1
-rw-r--r--Userland/Libraries/LibWeb/Page/Page.cpp5
-rw-r--r--Userland/Libraries/LibWeb/Page/Page.h1
-rw-r--r--Userland/Libraries/LibWeb/UIEvents/EventNames.h1
7 files changed, 21 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp b/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp
index 28bd7dffce..49f24646b8 100644
--- a/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp
+++ b/Userland/Libraries/LibWeb/OutOfProcessWebView.cpp
@@ -161,6 +161,11 @@ void OutOfProcessWebView::keydown_event(GUI::KeyEvent& event)
client().async_key_down(event.key(), event.modifiers(), event.code_point());
}
+void OutOfProcessWebView::keyup_event(GUI::KeyEvent& event)
+{
+ client().async_key_up(event.key(), event.modifiers(), event.code_point());
+}
+
void OutOfProcessWebView::mousedown_event(GUI::MouseEvent& event)
{
client().async_mouse_down(to_content_position(event.position()), event.button(), event.buttons(), event.modifiers());
diff --git a/Userland/Libraries/LibWeb/OutOfProcessWebView.h b/Userland/Libraries/LibWeb/OutOfProcessWebView.h
index b5e1bfeecd..7d812a2ecf 100644
--- a/Userland/Libraries/LibWeb/OutOfProcessWebView.h
+++ b/Userland/Libraries/LibWeb/OutOfProcessWebView.h
@@ -96,6 +96,7 @@ private:
virtual void mousemove_event(GUI::MouseEvent&) override;
virtual void mousewheel_event(GUI::MouseEvent&) override;
virtual void keydown_event(GUI::KeyEvent&) override;
+ virtual void keyup_event(GUI::KeyEvent&) override;
virtual void theme_change_event(GUI::ThemeChangeEvent&) override;
virtual void screen_rects_change_event(GUI::ScreenRectsChangeEvent&) override;
diff --git a/Userland/Libraries/LibWeb/Page/EventHandler.cpp b/Userland/Libraries/LibWeb/Page/EventHandler.cpp
index 0df361d9b0..cfc576e981 100644
--- a/Userland/Libraries/LibWeb/Page/EventHandler.cpp
+++ b/Userland/Libraries/LibWeb/Page/EventHandler.cpp
@@ -460,6 +460,13 @@ bool EventHandler::handle_keydown(KeyCode key, unsigned modifiers, u32 code_poin
return m_frame.active_document()->window().dispatch_event(move(event));
}
+bool EventHandler::handle_keyup(KeyCode key, unsigned modifiers, u32 code_point)
+{
+ auto event = UIEvents::KeyboardEvent::create_from_platform_event(UIEvents::EventNames::keyup, key, modifiers, code_point);
+ // FIXME: Figure out the right event target.
+ return m_frame.active_document()->window().dispatch_event(move(event));
+}
+
void EventHandler::set_mouse_event_tracking_layout_node(Layout::Node* layout_node)
{
if (layout_node)
diff --git a/Userland/Libraries/LibWeb/Page/EventHandler.h b/Userland/Libraries/LibWeb/Page/EventHandler.h
index 095dcb77f1..86ef6ac2f8 100644
--- a/Userland/Libraries/LibWeb/Page/EventHandler.h
+++ b/Userland/Libraries/LibWeb/Page/EventHandler.h
@@ -30,6 +30,7 @@ public:
bool handle_mousewheel(const Gfx::IntPoint&, unsigned buttons, unsigned modifiers, int wheel_delta);
bool handle_keydown(KeyCode, unsigned modifiers, u32 code_point);
+ bool handle_keyup(KeyCode, unsigned modifiers, u32 code_point);
void set_mouse_event_tracking_layout_node(Layout::Node*);
diff --git a/Userland/Libraries/LibWeb/Page/Page.cpp b/Userland/Libraries/LibWeb/Page/Page.cpp
index 5c860bf81a..0a44879978 100644
--- a/Userland/Libraries/LibWeb/Page/Page.cpp
+++ b/Userland/Libraries/LibWeb/Page/Page.cpp
@@ -81,4 +81,9 @@ bool Page::handle_keydown(KeyCode key, unsigned modifiers, u32 code_point)
return focused_context().event_handler().handle_keydown(key, modifiers, code_point);
}
+bool Page::handle_keyup(KeyCode key, unsigned modifiers, u32 code_point)
+{
+ return focused_context().event_handler().handle_keyup(key, modifiers, code_point);
+}
+
}
diff --git a/Userland/Libraries/LibWeb/Page/Page.h b/Userland/Libraries/LibWeb/Page/Page.h
index 077a605262..4622603674 100644
--- a/Userland/Libraries/LibWeb/Page/Page.h
+++ b/Userland/Libraries/LibWeb/Page/Page.h
@@ -52,6 +52,7 @@ public:
bool handle_mousewheel(const Gfx::IntPoint&, unsigned button, unsigned modifiers, int wheel_delta);
bool handle_keydown(KeyCode, unsigned modifiers, u32 code_point);
+ bool handle_keyup(KeyCode, unsigned modifiers, u32 code_point);
Gfx::Palette palette() const;
Gfx::IntRect screen_rect() const;
diff --git a/Userland/Libraries/LibWeb/UIEvents/EventNames.h b/Userland/Libraries/LibWeb/UIEvents/EventNames.h
index 66a3bba882..9c71ef4ab2 100644
--- a/Userland/Libraries/LibWeb/UIEvents/EventNames.h
+++ b/Userland/Libraries/LibWeb/UIEvents/EventNames.h
@@ -16,6 +16,7 @@ namespace Web::UIEvents::EventNames {
#define ENUMERATE_UI_EVENTS \
__ENUMERATE_UI_EVENT(click) \
__ENUMERATE_UI_EVENT(keydown) \
+ __ENUMERATE_UI_EVENT(keyup) \
__ENUMERATE_UI_EVENT(mousedown) \
__ENUMERATE_UI_EVENT(mouseenter) \
__ENUMERATE_UI_EVENT(mouseleave) \