LibWeb: Send key events to the WebContent process
This makes contenteditable work in multi-process mode. :^)
This commit is contained in:
parent
ea9ac3155d
commit
6e221adade
Notes:
sideshowbarker
2024-07-19 04:20:55 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/6e221adade4
5 changed files with 15 additions and 0 deletions
|
@ -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()));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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) =|
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue