Jonas Ådahl
53c3f497f1
wayland: Clean up some dead code
2023-02-17 12:03:58 +01:00
Jonas Ådahl
3183a21347
wayland/glcontext: Don't call wl_surface.offset on old objects
...
The availability of wl_surface.offset depends on the compositor, so we
can't call it unconditionally. Add a version check to so we only call
offset if we know we won't raise a protocol error.
Fixes: 0eb791eaaa
("Make mask nodes more versatile")
2023-02-17 12:03:27 +01:00
Matthias Clasen
0eb791eaaa
Make mask nodes more versatile
...
Add a GskMaskMode enumeration and implement it
in the GL and cairo renderers.
2023-02-14 19:07:01 -05:00
Jonas Ådahl
b2a2bf819d
wayland/launch-context: Use dispatch helper
...
Otherwise we risk a busy loop if e.g. the pipe broke.
2023-02-11 23:14:53 +01:00
Jonas Ådahl
dd9433b50e
wayland: Add event queue dispatch helper
...
Dispatch failing should always fatal; use a helper to centralize the
error handling everywhere.
2023-02-11 23:13:39 +01:00
Jonas Ådahl
a7fb9a6865
wayland: Handle dispatch failing in a couple of more places
...
Without doing this, we'll end up with risking GTK processes sitting
eating 100% CPU instead of just exit(1):ing.
2023-02-11 11:42:21 +01:00
Carlos Garnacho
4005eb8fe8
gdk/wayland: Rename gdkkeys-wayland.c file
...
Since it contains the GdkKeymap implementation, give it a more
obvious name.
2023-02-03 16:15:34 +01:00
Carlos Garnacho
1d4ceac2c5
gdk/wayland: "Split" GdkWaylandDevice implementation out
...
This is a bit spaghetti right now, since seats and devices were
heavily entangled there are a number of crossed private API calls that
should ideally not be there.
Let this be a first step, so more bits may move from the seat
implementation to devices.
2023-02-03 16:15:34 +01:00
Carlos Garnacho
a5246a6856
gdk/wayland: Split GdkDevicePad wayland implementation
...
This now lives in its own C file.
2023-02-03 16:08:07 +01:00
Carlos Garnacho
af00beb772
gdk/wayland: Move struct declarations to header
...
These will be used from outside the main file, after we are
done splitting it.
2023-02-03 16:00:01 +01:00
Carlos Garnacho
e5cd9354d5
gdk/wayland: Move GdkWaylandDevice data to private struct
...
Before splitting this object, avoid leaking details in its struct.
2023-02-03 15:58:11 +01:00
Carlos Garnacho
6426ab7466
gdk/wayland: Rename gdkdevice-wayland.c to gdkseat-wayland.c
...
This file, event though a clump of input-y objects, has more of
seats than anything else. Rename it so that we can start splitting
these objects out of it.
2023-02-03 15:58:11 +01:00
Carlos Garnacho
d228bae365
Merge branch 'drag-button-issue' into 'main'
...
Fix button mask calculation for Wayland
Closes #5561
See merge request GNOME/gtk!5468
2023-02-03 09:28:01 +00:00
Arjan Molenaar
f000baf0d6
wayland: Fix button mask for button 2 and 3
...
Wayland and GTK order mouse button 2 and 3 differently.
Fixes #5561 .
2023-02-02 21:48:58 +01:00
Matthias Clasen
8911ed5d9b
Merge branch 'monitor-description' into 'main'
...
Add GdkMonitor::description
See merge request GNOME/gtk!5466
2023-02-02 14:12:23 +00:00
Carlos Garnacho
7ad74ad6c3
gdk/wayland: Deprecate GdkDisplay windowing-specific for startup IDs
...
This is currently just used as a convenience storage of the startup ID
between the GtkApplication and the GtkWindow (after it's ready to notify
on it).
This could be untangled in the GTK layers so there is no involvement
from GDK in keeping the startup ID around, in the mean time just deprecate
these gdk_wayland* API calls.
2023-02-02 12:50:59 +01:00
Matthias Clasen
4e62350232
wayland: Set up monitor descriptions
...
We get this information in the xdg_output protocol.
2023-02-02 12:32:28 +01:00
Matthias Clasen
44aa6a891a
Drop gdkpopup-wayland-private.h
...
It is empty now.
2023-01-06 17:02:03 -05:00
Matthias Clasen
7a30a21405
waylandsurface: Introduce a few vfuncs
2023-01-06 17:00:45 -05:00
Matthias Clasen
2b3eadcfa4
waylandpopup: Drop unused exports
2023-01-06 16:50:20 -05:00
Matthias Clasen
352443d5a5
waylandtoplevel: Drop unused exports
2023-01-06 16:50:20 -05:00
Matthias Clasen
3574fde770
More cleanups
2023-01-06 16:50:20 -05:00
Matthias Clasen
793689789c
Misc cleanups
...
Detangle compute_size, among other things.
2023-01-06 16:50:19 -05:00
Matthias Clasen
120396fa40
wip: Split off GdkWaylandPopup
...
Like the GdkWaylandToplevel split-off, this needs some
more cleanup.
2023-01-06 16:50:19 -05:00
Matthias Clasen
d61ec38974
wip: Split off GdkWaylandToplevel
...
This still needs some more cleanup.
2023-01-06 16:50:19 -05:00
Matthias Clasen
2a463baed0
wayland: Rearrange the surface code
2023-01-06 16:50:19 -05:00
Matthias Clasen
348acde6bd
wayland: Split public headers
...
Split gdkwaylandsurface.h into itself,
gdkwaylandtoplevel.h and gdkwaylandpopup.h.
This is in preparation for splitting the
types for real.
2023-01-06 13:47:34 -05:00
Matthias Clasen
5ba793842b
wayland: Split display_server sub-structs
...
Move these to GdkWaylandToplevel and GdkWaylandPopup
as appropriate.
2023-01-06 13:47:34 -05:00
Matthias Clasen
149b608bfc
wayland: Move next_layout into popup and toplevel
...
This is where it belongs.
2023-01-06 13:47:34 -05:00
Matthias Clasen
3348ea81f2
wayland: Move pending toplevel state to GdkWaylandToplevel
...
Another toplevel-only thing.
2023-01-06 13:47:34 -05:00
Matthias Clasen
63e69131bd
wayland: Move input_grab_seat to GdkWaylandPopup
...
This is popup-only functionality.
2023-01-06 13:47:34 -05:00
Matthias Clasen
d42a34b0b3
wayland: Move reposition_token to GdkWaylandPopup
...
This is only used for popups, so move it there.
2023-01-06 13:47:34 -05:00
Matthias Clasen
5ee10fc669
wayland: Move shortcuts_inhibitors to GdkWaylandToplevel
...
Another toplevel-only feature.
2023-01-06 13:47:22 -05:00
Matthias Clasen
b0a4917ce4
wayland: Move imported_transient_for to GdkWaylandToplevel
...
Another toplevel-only thing.
2023-01-06 13:47:22 -05:00
Matthias Clasen
47e22d6301
wayland: Move geometry hints to GdkWaylandToplevel
...
Another toplevel-only thing.
2023-01-06 13:47:12 -05:00
Matthias Clasen
b970b60503
wayland: Move title to GdkWaylandToplevel
...
This is a toplevel property.
2023-01-06 13:47:06 -05:00
Matthias Clasen
7406f8165d
wayland: Move drag surfaces to their own file
2023-01-06 13:46:58 -05:00
Matthias Clasen
9435e689c3
wayland: Drop create_dnd_surface
...
It is only used in one place.
2023-01-06 13:46:58 -05:00
Matthias Clasen
ad1af87834
Merge branch 'gtk4-fix-xdg-activation-set-surface' into 'main'
...
gdk/wayland: set requesting surface to xdg-activation
See merge request GNOME/gtk!5293
2023-01-06 14:03:01 +00:00
Carlos Garnacho
5aeabdb3d4
gdk/wayland: Perform xdg_activation on gdk_toplevel_set_startup_id
...
This call has everything to perform activation as specified by the
xdg_activation protocol, notably a surface to activate as opposed to
gdk_display_notify_startup_complete().
Make activation happen here, so that the surface gets activated when
its gets a startup ID assigned.
2023-01-03 14:57:49 +01:00
Joan Bruguera
43c1a433aa
gdk/wayland: set requesting surface to xdg-activation
...
The argument to xdg_activation_token_v1_set_surface is documented to be the
surface requesting the activation, not the surface to be activated, which is
given later when calling xdg_activation_v1_activate.
(c.f. 36cee4bdbc
)
Use the same logic as in gdk_wayland_app_launch_context_get_startup_notify_id,
i.e. if we have a surface with focus, set that, otherwise set NULL.
This fixes requesting urgent/focus on wlroots (compositors like Sway, etc.),
which was blocked as the surface requesting the activation didn't have focus.
Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
2022-12-04 23:33:34 +00:00
Vlad Zahorodnii
433734de21
gdk/wayland: Improve readability of wl_output binding code
...
Provide OUTPUT_VERSION macro to indicate the implemented version of
wl_output in gtk rather than use a magical number.
2022-11-23 22:53:00 +02:00
Vlad Zahorodnii
261bcd40bd
gdk/wayland: Prefer wl_output_release() over wl_output_destroy()
...
By using wl_output_release(), GDK lets the compositor to clean up the
output global more nicely.
For example, currently, most compositors remove the global and then
destroy it later after N seconds expire. With this, the compositor could
experiment with destroying the output global once all its resources are
destroyed.
2022-11-22 14:12:22 +02:00
Vlad Zahorodnii
1d94aefe2b
gdk/wayland: Clear GdkWaylandMonitor::output using g_clear_pointer()
...
Use g_clear_pointer() to make tear down code consistent.
2022-11-22 11:23:08 +02:00
Vlad Zahorodnii
e82e7823a8
gdk/wayland: Destroy zxdg_output_v1 upon GdkWaylandMonitor destruction
...
It prevents potentially leaking memory.
2022-11-22 11:18:32 +02:00
Matthias Clasen
e53c9e4832
Merge branch 'wayland-foreign-v2' into 'main'
...
wayland: Also support the v2 of the importer
See merge request GNOME/gtk!5231
2022-11-18 18:00:42 +00:00
Matthias Clasen
b3821b19b5
wayland: Also support the v2 of the importer
...
Commit 0ba8e16e14
added support for the export
part of zxdg_foreign_v2, but neglected that the importer
has a v2 as well. Support it.
2022-11-18 12:10:56 -05:00
Jonas Ådahl
07a59da6e4
wayland/surface: Set the tiling state from xdg-shell too
...
We plumbed it from the gtk-shell configure event, but didn't for the
equivalent state passed via xdg_toplevel.configure.
2022-11-18 13:11:25 +01:00
Matthias Clasen
2bab8cca5f
gdk: Rename GDK_SURFACE_TEMP
...
We use this value only for drag surfaces, so call it that.
2022-11-17 22:49:56 -05:00
Matthias Clasen
df5a13806d
Merge branch 'gdkwaylandtoplevel' into 'main'
...
gdk/wayland/surface: Move more members to `GdkWaylandPopup` and `GdkWaylandToplevel`
See merge request GNOME/gtk!4227
2022-11-10 13:58:24 +00:00