LibWeb: Send key events to the WebContent process

This makes contenteditable work in multi-process mode. :^)
This commit is contained in:
Andreas Kling 2020-08-03 19:58:59 +02:00
parent ea9ac3155d
commit 6e221adade
Notes: sideshowbarker 2024-07-19 04:20:55 +09:00
5 changed files with 15 additions and 0 deletions

View file

@ -76,6 +76,11 @@ void WebContentView::resize_event(GUI::ResizeEvent& event)
request_repaint();
}
void WebContentView::keydown_event(GUI::KeyEvent& event)
{
client().post_message(Messages::WebContentServer::KeyDown(event.key(), event.modifiers(), event.code_point()));
}
void WebContentView::mousedown_event(GUI::MouseEvent& event)
{
client().post_message(Messages::WebContentServer::MouseDown(to_content_position(event.position()), event.button(), event.buttons(), event.modifiers()));

View file

@ -62,11 +62,13 @@ private:
WebContentView();
// ^Widget
virtual bool accepts_focus() const override { return true; }
virtual void paint_event(GUI::PaintEvent&) override;
virtual void resize_event(GUI::ResizeEvent&) override;
virtual void mousedown_event(GUI::MouseEvent&) override;
virtual void mouseup_event(GUI::MouseEvent&) override;
virtual void mousemove_event(GUI::MouseEvent&) override;
virtual void keydown_event(GUI::KeyEvent&) override;
// ^ScrollableWidget
virtual void did_scroll() override;

View file

@ -153,4 +153,9 @@ void ClientConnection::handle(const Messages::WebContentServer::MouseUp& message
page().handle_mouseup(message.position(), message.button(), message.modifiers());
}
void ClientConnection::handle(const Messages::WebContentServer::KeyDown& message)
{
page().handle_keydown((KeyCode)message.key(), message.modifiers(), message.code_point());
}
}

View file

@ -57,6 +57,7 @@ private:
virtual void handle(const Messages::WebContentServer::MouseDown&) override;
virtual void handle(const Messages::WebContentServer::MouseMove&) override;
virtual void handle(const Messages::WebContentServer::MouseUp&) override;
virtual void handle(const Messages::WebContentServer::KeyDown&) override;
void flush_pending_paint_requests();

View file

@ -12,4 +12,6 @@ endpoint WebContentServer = 89
MouseDown(Gfx::IntPoint position, unsigned button, unsigned buttons, unsigned modifiers) =|
MouseMove(Gfx::IntPoint position, unsigned button, unsigned buttons, unsigned modifiers) =|
MouseUp(Gfx::IntPoint position, unsigned button, unsigned buttons, unsigned modifiers) =|
KeyDown(i32 key, unsigned modifiers, u32 code_point) =|
}