Commit Graph

136 Commits

Author SHA1 Message Date
101fbbbd1f [Window] Add unfiltered input handler signal for custom decorations. 2025-10-12 21:15:46 +03:00
3d1c9fd5de Move server files into their subfolders 2025-09-30 19:39:39 -07:00
7b47f5e8db [Accessibility] Process non-focusable windows (popups, menus) as part of the parent window tree. 2025-08-17 12:15:08 +03:00
2111ff0e2a Fix menu keyboard and controller navigation. 2025-07-21 10:03:07 +03:00
353bd80c91 Merge pull request #107581 from timothyqiu/window-title-update
Fix game view window not updating title when translation changes
2025-06-18 18:13:50 -05:00
34a97f9c9b Fix scale and position of popups with force_native. 2025-06-16 13:03:42 +03:00
0a1fa10315 Fix game view window not updating title when translation changes 2025-06-16 09:35:25 +08:00
12d957e737 Call PopupMenu min. size calculations after about_to_popup signal processing. 2025-06-11 12:23:29 +03:00
aff5b413aa Move some accessibility properties from Node to Control 2025-06-08 16:25:28 +03:00
4afeca3bcf Replace global oversampling with overrideable per-viewport oversampling. 2025-04-14 13:43:09 +03:00
e6a61b1ecc Merge pull request #76829 from bruvzg/ac_kit_direct
Implement screen reader support using AccessKit library.
2025-04-08 12:32:47 -05:00
b106dfd4f9 Base accessibility API. 2025-04-08 20:14:28 +03:00
f37fb49739 Add separate minimize_disabled and maximize_disabled window flags. 2025-04-07 18:58:11 +03:00
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
7b21950fb0 Merge pull request #103751 from bruvzg/glob_menu_icons_theme
[Editor] Change global menu icons theme independently of editor theme.
2025-03-19 12:26:57 +01:00
d990f594a0 Sync display/window/size/initial_position_type and Window::WINDOW_INITIAL_POSITION_ enum. 2025-03-11 08:33:02 +02:00
324512e11c Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
fd98c963ba [Editor] Change global menu icons theme independently of editor theme. 2025-03-07 08:59:52 +02:00
65cf7c1d5e Merge pull request #101221 from bruvzg/win_dec_exp
[Window] Expose `start_drag` and `start_resize` methods (for both native and embedded windows).
2025-01-09 11:17:24 +01:00
b194e050d7 Merge pull request #91333 from YeldhamDev/working_on_this_felt_like_constantly_walking_into_rakes
Make `PopupMenu/Panel` shadows properly visible again
2025-01-07 23:17:02 +01:00
8d911b2554 [Window] Expose start_drag and start_resize methods (for both native and embedded windows). 2025-01-07 23:35:14 +02:00
9fece033ab [macOS, Windows] Add support for excluding windows from a screenshot. 2024-12-10 11:00:13 +02:00
f7f6432af6 Make PopupMenu/Panel shadows properly visible again 2024-12-02 14:20:58 -03:00
e0304a7d00 Add helper method to get Window from ID 2024-11-29 21:15:23 +01:00
932b2269f8 Fix missing native file dialog title translation. 2024-11-14 14:48:52 +02:00
0d350e7108 Set clang-format RemoveSemicolon rule to true
- Set clang-format `Standard` rule to `c++20`
2024-10-25 13:49:43 -04:00
7dbea98c49 Merge pull request #97005 from Repiteo/core/window-corner-style
Core: Add `DisplayServer` flag for sharp corners
2024-10-21 16:39:25 -05:00
f8c4a683d7 Core: Add DisplayServer flag for sharp corners 2024-10-18 11:20:21 -05:00
009446a277 Add System Locale layout direction for Control and Window 2024-10-17 07:52:07 +08:00
60aaa017ff Enable Drag and Drop for SubViewports and Windows
Make Drag and Drop an application-wide operation.
This allows do drop on Controls in other Viewports/Windows.

In order to achieve this, `Viewport::_update_mouse_over` is adjusted to
remember the Control, that the mouse is over (possibly within nested
viewports). This Control is used as a basis for the Drop-operation, which
replaces the previous algorithm, which was only aware of the topmost
Viewport.

Also now all nodes in the SceneTree are notified about the Drag and Drop
operation, with the exception of SubViewports that are not children of
SubViewportContainers.
2024-09-15 01:06:02 +02:00
0dde931bc9 StringName: Fix empty hash
+Fixed compat hashes
2024-09-09 13:30:02 -07:00
19839d9553 Fix Window position preview in the editor. 2024-05-29 11:56:06 +03:00
cfdb968848 [Window] Allow to override viewport and project settings and force use of native window. 2024-03-04 23:06:27 +02:00
3ce9ae71fc Merge pull request #84906 from /fix-some-defvals 2024-02-23 11:29:22 +01:00
5ba92e5a57 Fix some DEFVALs to use the right type
- Use `StringName()` in DEFVAL for StringNames.
- Use `Variant()` in DEFVAL for Variants.
2024-02-23 01:50:18 +01:00
584a6aeeb7 Revert "Fix NOTIFICATION_WM_SIZE_CHANGED firing if the size hasn't changed"
This reverts commit 957378a69e, reversing
changes made to 0d88840e81.
2024-02-21 15:37:53 -03:00
7b42c24550 Make auto translation inheritable 2024-02-15 16:51:19 -03:00
03767fbf3b Merge pull request #86446 from reduz/transient-to-focused
Implement a `transient_to_focused` Window mode
2024-01-15 13:25:00 +01:00
15144c24bd Implement a transient_to_focused mode
This intends to be the correct way to handle non-child windows becoming covered by the current window when becoming focused.
Enabling this property on select windows, they will become transient to the currently focused one when becoming visible.

This deprecates the "unparent_when_invisible" function introduced by #76025.
2024-01-14 18:51:44 +01:00
06534f8ad5 Add deprecation notice to a duplicate method of class Window 2024-01-12 18:18:28 +01:00
957378a69e Merge pull request #84151 from YeldhamDev/that_was_not_a_resize_you_dunce
Fix `NOTIFICATION_WM_SIZE_CHANGED` firing if the size hasn't changed
2024-01-02 15:08:46 +01:00
02d4579fa2 Merge pull request #85000 from bruvzg/ed_ui_direction
[Editor] Add option to override editor UI layout direction.
2023-12-19 13:01:35 +01:00
932174fedf [Editor] Add option to override editor UI layout direction. 2023-11-17 14:56:45 +02:00
fa02d19fd1 Fix internal events not being delivered to some Window types
`AcceptDialog`, `Popup` and `PopupMenu` no longer subscribe to
"window_input" signal, because that is only sent if it is not an
internal signal.

Instead they receive events in `_input_from_window`. They ensure that
the event is also propagated to their super-function, just like
previously the signals would be treated.
2023-11-14 20:29:17 +01:00
62ab9bf1c4 Fix NOTIFICATION_WM_SIZE_CHANGED firing if the size hasn't changed 2023-10-31 22:58:12 -03:00
72e2e47059 [DisplayServer] Add method to estimate window title bar size. 2023-10-03 16:13:52 +03:00
1e819ae3aa Merge pull request #82590 from YuriSizov/window-you-come-to-me-on-this-day-the-day-when-my-child-becomes-exclusive-with-a-transient-parent-to-ask-for-this
Add more context to some `Window` errors
2023-10-02 13:16:39 +02:00
53172d9860 Add more context to some Window errors 2023-09-30 21:44:05 +02:00
c52db6190c [FileDialog] Make set_visible compatible with native dialogs. 2023-09-30 00:40:49 +03:00
fe000277ea Bind remaining theme properties to their respective classes
This adds binds for GraphEdit/GraphElement/GraphNode, which were
skipped before due to a rework. This also adds binds for Window,
which was skipped before due to a complicated code organization.

Also adds theme cache entries/direct cache access to a few places
that previously missed it. Some theme properties are now exposed
to other classes via friendships or public getters for convenience.

This removes all string-based theme access from scene/ classes.
2023-09-13 19:31:35 +02:00