Commit Graph

220 Commits

Author SHA1 Message Date
3aeb4a5542 Improve cursor_set_custom_image() method 2024-02-28 20:32:25 +01:00
ee53ae28df Add method to get "base" system UI color (macOS/Windows) and system theme change callback. 2024-02-13 18:38:53 +02:00
73eff10c76 Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
74b03edf1e Merge pull request #82800 from Sauermann/fix-screen-mousemotion
Add screen-related attributes to mouse input events
2024-02-09 18:08:58 +01:00
4f478a55cc Merge pull request #86843 from RandomShaper/fix_null_ptr
Avoid several null-dereferences of ApiContextRD
2024-02-07 10:58:01 +01:00
d5a5dd52e8 Avoid several null-dereferences of ApiContextRD 2024-02-06 19:55:01 +01:00
8a2e4409e6 [X11] Partial Fix Godot Editor and Project Manager steals focus on a window manager on Linux
This is a workaround for the most critical portion of the WM focus bug
described in #68305. On some specific X11 WM configurations, the
editor's main window and any popups it creates will fight for focus,
which causes a total system lockup due to mouse and keyboard input being
stolen as well. Getting out of this infinite loop requires force
restarting the system.

It can be tested with the following shell script:

```bash
	!#/bin/sh

	godot4 &
	sleep 30
	pkill -x godot4
```

The workaround identified in #68305 is to remove the call to
XSetInputFocus in the ConfigureNotify event handler, so I have removed
the conditional block that calls this as well as the setup code above it
since there is no need to allocate the memory for the variables if they
won't be used in that call anymore.

This is just a hack and is not a complete fix for #68305. Multiple
developers are collaborating on a proper fix in the discussion in that
issue, but time is a valuable resource that no one has enough of, so I
am committing this workaround as a stop-gap to prevent the most critical
problem while we work on a full solution for the underlying cause.
2024-02-05 17:00:24 -06:00
2235a1cbd0 Add screen-related attributes to mouse input events 2024-02-05 23:30:15 +01:00
f220d46cdc Merge pull request #80231 from romlok/input-key-location
Support detecting and mapping ctrl/alt/shift/meta by their left/right physical location
2024-01-29 13:15:42 +01:00
8406e60522 Add InputEventKey.location to tell left from right
This adds a new enum `KeyLocation` and associated property
`InputEventKey.location`, which indicates the left/right location of key
events which may come from one of two physical keys, eg. Shift, Ctrl.

It also adds simulation of missing Shift KEYUP events for Windows.
When multiple Shifts are held down at the same time, Windows natively
only sends a KEYUP for the last one to be released.
2024-01-26 14:42:28 +01:00
a8f521bcad [Native File Dialog] Add support for adding custom options to the dialogs.
Add support for adding custom options (checkboxes and optionboxes) to the dialogs (both native and built-in).
2024-01-24 15:00:31 +02:00
64a52e08fe [X11] Don't re-set input focus if the given window already has it 2024-01-18 08:52:03 -06:00
4aff0ab5d5 Merge pull request #86441 from dsnopek/mequam-x11-focus-grab
[X11] Fix Godot stealing focus on alternative window managers
2024-01-18 09:34:18 +01: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
0e8f90f4c8 Update deferred calls to use Callables 2024-01-09 16:11:47 +01:00
40d69c25d5 [X11] Fix Godot stealing focus on alternative Window Managers 2024-01-09 08:58:59 -06:00
3a8524dd92 Merge pull request #83452 from RandomShaper/rd_common
Split `RenderingDevice` into API-agnostic and `RenderingDeviceDriver` parts
2023-12-20 20:09:18 +01:00
12a519bae2 Split RenderingDevice into API-agnostic and RenderingDeviceDriver parts
Credit and thanks to @bruzvg for multiple build fixes, update of 3rd-party items and MinGW support.

Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2023-12-20 19:18:08 +01:00
aee8a3bada Merge pull request #75489 from bruvzg/init_pos_usable
[DisplayServer] Use screen "usable rect" instead of full rect to calculate initial window rect.
2023-12-19 20:32:10 +01:00
b02cf351f3 [DisplayServer] Use screen "usable rect" instead of full rect to calculate initial window rect. 2023-12-04 07:56:33 +02:00
bf45d3ae24 X11: Send IME update notification deferred 2023-11-24 13:18:50 +01:00
f3d4f5a77e [X11] Add fallback from desktop GL to GLES, suppress PRIME detector error spam. 2023-11-06 12:40:44 +02:00
1d9ec3caa3 Fix freeze when requesting clipboard image from our own window 2023-10-25 18:32:40 -05:00
085255bd0e Improved X11 screen_get_refresh_rate performance 2023-10-24 11:25:51 -07:00
2f33c2b20e Merge pull request #81439 from Setadokalo/clipboard_image
Implement `clipboard_get`/`has_image` for X11
2023-10-20 15:06:42 +02:00
3b5a9e31bb Implement clipboard_get/has_image for X11 2023-10-20 02:59:10 -05:00
8eb32f9aad Fix unused variables warning when touch is disabled 2023-10-13 16:04:08 +02:00
f18aa00e85 Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-10-08 17:23:33 +02:00
09b30be86d Add vararg call() method to C++ Callable 2023-10-05 11:35:29 +02:00
af00c4a54a [X11] Add support for using EGL/GLES instead of GLX. 2023-10-04 14:15:36 +03:00
31dbbc2c5a Merge pull request #80952 from bruvzg/nfdlg_refocus
[Native File Dialogs] Refocus last focused window on close.
2023-10-03 17:13:58 +02:00
1887a9df19 [macOS/Windows] Add optional ANGLE backed OpenGL renderer support. Add EGL_ANDROID_blob_cache caching.
Co-authored-by: Riteo <riteo@posteo.net>
2023-09-21 14:21:00 +03:00
3565d1bf7e [Drivers,Platform] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-12 20:13:32 +02:00
2e1f48ff6e [Native File Dialogs] Refocus last focused window on close. 2023-08-24 09:34:58 +03:00
c72b851dfb Merge pull request #80104 from bruvzg/freedesktop_native_file_dialog
[Linux/Freedesktop] Implement native file selection dialog support.
2023-08-17 11:23:00 +02:00
9a48b14a2d Merge pull request #80036 from PorkrollPosadist/fix-wayland-window-behavior
Use EWMH for `DisplayServerX11::_window_minimize_check()` implementation
2023-08-17 11:22:36 +02:00
6cc314e0fa [Linux/Freedesktop] Implement native file selection dialog support. 2023-08-17 10:56:16 +03:00
49f0d8cee3 Merge pull request #80279 from Sauermann/fix-x11-mouse-window-event-crash
Track hovered `Window` in `DisplayServerX11`
2023-08-10 00:43:00 +02:00
a7c5849f98 Track hovered Window in DisplayServerX11
Send mouse-entered/exited window-events only when necessary
2023-08-09 12:20:23 +02:00
6a0410bbc2 Merge pull request #80240 from bruvzg/x11_ext_checks
[X11] Do not fail DisplayServer init if non-essential extensions are missing.
2023-08-07 14:50:47 +02:00
e26a6c36c8 Fix native popups auto-closing when interacting with non-client area. 2023-08-07 10:01:48 +03:00
acff87ffda [X11] Do not fail DisplayServer init if non-essential extensions are missing. 2023-08-04 10:58:14 +03:00
8c1ce404d7 Fix crash on Windows when closing Window
Send `WINDOW_EVENT_MOUSE_EXIT` when a window is destroyed.

Ensure, that on Windows, the event_callback is still valid during
destroying the `Window`.
2023-08-02 00:17:25 +02:00
5666656d42 Use EWMH for DisplayServerX11::_window_minimize_check() implementation 2023-07-31 16:35:18 -04:00
7e21eb7e00 Extract and reorganize texture resource classes 2023-07-14 20:04:21 +02:00
ff689003a5 Merge pull request #77993 from bruvzg/key_lbl_from_p
Implement DisplayServer.keyboard_get_label_from_physical method.
2023-07-12 21:02:37 +02:00
2b47f6715e Merge pull request #78437 from bruvzg/set_icon
Add error checks and harmonize behavior of the `set_icon` method.
2023-07-12 15:09:14 +02:00
dcd16a5750 Linux: Fix build with use_sowrap=no and various warnings/errors 2023-07-10 14:34:01 +02:00
9c5a0c6c10 Add error checks and harmonize behavior of the set_icon method. 2023-07-03 13:48:28 +03:00