Commit Graph

5 Commits

Author SHA1 Message Date
Timothy Flynn
631f03c955 LibWeb+LibWebView+WebContent: Add IPC to send drag-and-drop events
This adds the IPC and related hooks to allow the UI to send drag-and-
drop events from the UI process to the WebContent process.

(cherry picked from commit 948b6de3b122b50d67d967ed780133e847d629df;
amended to fix in ConnectionFromClient.h due to us still having
`add_backing_store` due to not having LadybirdBrowser/ladybird#233)
2024-11-01 19:58:08 -04:00
Timothy Flynn
a7133e5f31 LibWeb: Begin implementing the drag-and-drop processing model
The drag-and-drop processing model allows for users to drag around
either elements within the DOM or objects completely outside the DOM.
This drag event can either end without action (via cancellation or user
input), or in a drop event, where the dragged object is dropped onto
another element within the DOM.

The processing model is rather large. This implements enough of it to
allow the UI process to specifically handle dragging objects outside of
the DOM onto the DOM. For example, dragging an image from the OS file
manager onto a file-upload input element. This does not implement the
ability to drag DOM elements.

(cherry picked from commit e8a1b8944719e1e297453527fbe0a84cc2c33eb6)
2024-11-01 19:58:08 -04:00
Andrew Kaster
fa54314551 LibWeb: Use Web::UIEvents::KeyCode
This cherrypicks most of commit d90a9ab70c7ef73577775f0abed8552907899f75
It doesn't actually remove Kernel/API/KeyCode.h though, since we still
need that :^)

Patch created by running (in zsh, where the `${=foo}` syntax is needed
to tell zsh to convert space-separated strings into separate args):

    files=$(git show --name-only --pretty='' d90a9ab70c7e |
            rg -v 'CMakeLists.txt|KeyCode.h' | tr '\n' ' ')
    git show d90a9ab70c7e -- ${=files} | git apply -3 -
2024-09-29 11:13:23 -04:00
Andreas Kling
09980af4ea LibWeb: Add Web::UIEvents::MouseButton enum, drop dependency on LibGUI
This was the only thing LibWeb needed from LibGUI, and we can just
duplicate the enum in LibWeb and get rid of a bogus dependency.
2024-06-02 20:24:42 +02:00
Timothy Flynn
baf359354b LibWebView+WebContent: Use Web::InputEvent for WebContent input IPC
Now that all input events are handled by LibWebView, replace the IPCs
which send the fields of Web::KeyEvent / Web::MouseEvent individually
with one IPC per event type (key or mouse).

We can also replace the ad-hoc queued input structure with a smaller
struct that simply holds the tranferred Web::KeyEvent / Web::MouseEvent.

In the future, we can also adapt Web::EventHandler to use these structs.
2024-03-06 07:46:18 +01:00