1
0
Fork 0
godot/scene/main
Riteo 84d3adcf2f Wayland: Implement native sub-windows
The backend is now mature enough to not explode with multiple windows
but the `DisplayServer` API still cannot meet some guarantees required
by the various Wayland protocols we use. To meet those guarantees this
patch adds three new elements to the DisplayServer API, with relative
handling logic for `Window` and `Popup` nodes:

 - `WINDOW_EVENT_FORCE_CLOSE`, which tells a window to *forcefully*
close itself and ensure a proper cleanup of its references, as Wayland
enforces this behavior;

 - `WINDOW_FLAG_POPUP_WM_HINT`, which explicitly declares a window as a
"popup", as Wayland enforces this distinction and heuristics are not
reliable enough;

 - `FEATURE_SELF_FITTING_WINDOWS`, which signals that the compositor can
fit windows to the screen automatically and that nodes should not do
that themselves.

Given the size of this feature, this patch also includes various
`WaylandThread` reworks and fixes including:

 - Improvements to frame wait logic, with fixes to various stalls and a
configurable (through a `#define`) timeout amount;

 - A proper implementation of `window_can_draw`;

 - Complete overhaul of pointer and tablet handling. Now everything is
always accumulated and handled only on each respective `frame` event.
This makes their logic simpler and more robust.

 - Better handling of pointer leaving and pointer enter/exit event
sending;

 - Keyboard focus tracking;

 - More solid window references using IDs instead of raw pointers as
windows can be deleted at any time;

 - More aggressive messaging to window nodes to enforce rects imposed by
the compositor.
2025-04-04 20:23:25 +02:00
..
SCsub SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
canvas_item.compat.inc
canvas_item.cpp Organize ifdefs for disabling navigation, physics, and XR 2025-04-02 08:24:24 -07:00
canvas_item.h Add node configuration warnings for nested clipping and CanvasGroups 2025-03-26 21:40:49 -07:00
canvas_layer.cpp Get rid of easily removable uses of const_cast 2024-12-01 17:50:13 -08:00
canvas_layer.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
http_request.cpp Clean up some uses of `String::substr` 2025-03-07 14:50:38 +01:00
http_request.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
instance_placeholder.cpp Improve use of `Ref.is_null/valid` 2024-12-23 16:35:02 -05:00
instance_placeholder.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
missing_node.cpp Fix a few more super calls in `get_configuration_warnings` methods 2024-11-08 14:58:37 +01:00
missing_node.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
multiplayer_api.cpp Remove unused headers in scene. 2024-12-24 00:40:09 +08:00
multiplayer_api.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
multiplayer_peer.cpp Replace size() == 0 with is_empty(). 2025-04-02 19:18:43 +08:00
multiplayer_peer.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
node.cpp Using iterator pattern instead of List::Element *. 2025-03-28 13:29:15 +08:00
node.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
resource_preloader.cpp Use initializer list in Arrays 2025-03-26 18:38:15 +01:00
resource_preloader.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
scene_tree.cpp Merge pull request #100602 from KoBeWi/over_100_changes_in_50_random_files_aka_the_best_kind_of_PR 2025-03-31 12:03:47 -05:00
scene_tree.h Don't free already freed scenes when changing SceneTree current scene 2025-03-18 22:31:37 +01:00
shader_globals_override.cpp Replace size() == 0 with is_empty(). 2025-04-02 19:18:43 +08:00
shader_globals_override.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
status_indicator.cpp
status_indicator.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
timer.cpp [Core] Align naming and args of `(SceneTree)Timer` time scale methods 2024-12-23 16:47:00 -05:00
timer.h Style: Replace header guards with `#pragma once` 2025-03-07 17:33:47 -06:00
viewport.cpp Replace size() == 0 with is_empty(). 2025-04-02 19:18:43 +08:00
viewport.h Allow to compile templates without physics servers 2025-03-28 11:00:44 -03:00
window.cpp Wayland: Implement native sub-windows 2025-04-04 20:23:25 +02:00
window.h Wayland: Implement native sub-windows 2025-04-04 20:23:25 +02:00