1
0
Fork 0
Commit Graph

858 Commits

Author SHA1 Message Date
Rémi Verschelde 391849d232
Merge pull request #96867 from L2750558108/remove-gui-key-event-accepted-shit
Remove useless `Viewport::gui.key_input_accepted`
2024-09-16 13:35:13 +02:00
Rémi Verschelde ac80ba71e2
Merge pull request #93500 from anniryynanen/multi-press
Improve button behavior when multiple mouse buttons are used at the same time
2024-09-16 13:34:15 +02:00
Anni Ryynänen 2033510a65
Improve button behavior when multiple mouse buttons are used at the same time
- To emit `pressed`, buttons require that the press was initiated while hovering.
- Controls can't grab focus from a mouse click if they're not hovered.
- Hovers are updated both before and after a handled mouse button event.
2024-09-15 19:06:10 +03:00
Markus Sauermann 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
2750558108 ccc6e5d25f Remove Useless Viewport::gui.key_input_accepted 2024-09-13 20:52:05 +08:00
graydoubt e589c5baf3 Expose Viewport.gui_cancel_drag() to GDScript as a counterpart to Control.force_drag() 2024-09-06 06:20:22 -04:00
Rémi Verschelde e2dd56bea7
Merge pull request #95902 from kitbdev/remove-forced-mouse-focus
Clean up Viewport's `forced_mouse_focus`
2024-09-03 17:38:17 +02:00
aaronp64 7a9acd5aca Fix SubViewport/AudioStreamPlayer2D crash
Updated Viewport destructor to remove itself from World2D, to avoid World2D keeping invalid pointers.
2024-09-03 08:27:47 -04:00
Rémi Verschelde f565996472
Merge pull request #92536 from Daylily-Zeleen/daylily-zeleen/fix_3d_input_event
Add missing check to avoid passing handled input event to collision object 3d.
2024-08-28 00:10:57 +02:00
Rémi Verschelde 40c17d6380
Merge pull request #95846 from jadoc/fix-tooltips
Only reset the tooltip timer when the mouse has actually moved
2024-08-26 22:45:28 +02:00
Alex Docauer 125ff3213a
Only reset tooltip timer when mouse actually moved
InputEventMouseMotion isn't guaranteed to fire only on actual mouse
movement. It's not uncommon for the underlying OS motion event to be
sent either by the OS itself or another application even though the
mouse hasn't moved.  Godot will generate such zero-motion
InputEventMouseMotion events itself for things like cursor shape
changes.

Once started, the tooltip timer is reset only after a mouse movement of
at least 5 pixels in one frame.
2024-08-22 19:20:41 -07:00
kit 307e40e873 Clean up Viewport forced_mouse_focus 2024-08-21 09:37:44 -04:00
jordi 61e2aa7914
Redraw SubViewportContainer on SubViewport size change 2024-08-19 14:53:53 +02:00
Rémi Verschelde 46c6865979
Merge pull request #92391 from rburing/fti_3d
Physics interpolation (3D)
2024-08-16 10:33:37 +02:00
Rémi Verschelde a86c3e44dd
Merge pull request #91965 from aaronp64/tooltip_size
Fix tooltip content being cut off at some display scales
2024-08-16 10:33:25 +02:00
Daylily-Zeleen f90f663258 Avoid passing handled input event to collision object 3d. 2024-07-27 14:58:56 +08:00
Ricardo Buring 2f8ab4a654 Fixed Timestep Interpolation (3D)
Adds 3D fixed timestep interpolation to the rendering server.
This does not yet include support for multimeshes or particles.

Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-07-07 22:15:23 +02:00
bruvzg c689823c60
Fix subwindow titlebar redraw on oversampling change. 2024-06-23 00:01:56 +03:00
Ainsley 915e39b3c9 Use `_camera_3d_set` instead of change camera_3d directly 2024-06-20 17:21:38 +08:00
Rémi Verschelde b7ea8415c2
Merge pull request #91997 from aaronp64/tooltip_transforms
Fix tooltip mouse position conversion for scaled controls
2024-06-10 16:11:39 +02:00
bruvzg 9fb9660912
Force canvas item update on oversampling change. 2024-06-03 19:46:49 +03:00
aaronp64 aa07828503 Fix tooltip mouse position conversion for scaled controls
Viewport used get_global_transform().xform_inv(mpos) to convert the mouse position to the control's local coordinates when getting the control's tooltip, which does not handle scale correctly.  This impacted tooltips for any controls that depended on the position to determine what tooltip to show, including RichTextLabel, ItemList, Tree, and probably some others.  This change is for Viewport to use get_global_transform_with_canvas().affine_inverse().xform(mpos) for tooltips instead, to match what we do for Viewport::_gui_call_input.

Fixes #91984
2024-05-15 17:28:58 -04:00
aaronp64 ca8e3d4923 Fix tooltip content being cut off at some display scales
When getting the minimum size for a tooltip, we get the value as a Vector2.  Window::set_size() takes a Vector2i, so this size was getting truncated.  At certain display scales, this could be enough to cut off part of the tooltip.  Updated to call Vector2::ceil() to round up before calling Window::set_size()

Fixes #91958
2024-05-15 09:19:00 -04:00
kobewi 413c11357d Use Core/Scene stringnames consistently 2024-05-13 23:41:07 +02:00
A Thousand Ships 86de59d60a
[Core] Add `LocalVector::has` for convenience 2024-05-06 18:03:37 +02:00
Bastiaan Olij 9042ddf19f Improvements to VRS/Foveated rendering 2024-05-03 17:20:30 +10:00
Rémi Verschelde b2af040423
Merge pull request #91425 from Sauermann/fix-force-drag-focus-crash
Make `mouse_focus` and `mouse_focus_mask` consistent for force_drag
2024-05-02 12:46:45 +02:00
A Thousand Ships 308dbb8c63
[Core] Add scalar versions of `Vector*` `min/max/clamp/snap(ped)`
Convenience for a number of cases operating on single values
2024-05-02 10:31:13 +02:00
Markus Sauermann 30a19a5c2f Make `mouse_focus` and `mouse_focus_mask` consistent for force_drag
In `Viewport::_gui_force_drag` currently `Viewport::gui.mouse_focus`
gets cleared, but `Viewport::gui.mouse_focus_mask` doesn't get cleared.

This is an inconsistency which can cause a crash.

With the change of this PR, `mouse_focus_mask` also gets cleared.
This is in alignment with how regular drag and drop clears both variables.
2024-05-02 00:10:29 +02:00
Markus Sauermann 792b38813f Remove unused variable Viewport::gui.last_mouse_focus
The last use was removed in January 2023
2024-05-01 11:20:40 +02:00
Bastiaan Olij cbab7dc049 OpenXR: Change timing of xrWaitFrame and add thread safety features to OpenXR 2024-05-01 14:24:41 +10:00
Rémi Verschelde ca38212604
Merge pull request #89643 from mnemoli/pickone-fix-89641
Fix mouse events when `physics_object_picking_first_only` enabled
2024-04-30 17:03:10 +02:00
kit 154f727c7a Overhaul TextEdit selection.
The caret is now a part of the selection.
2024-04-26 14:24:10 -04:00
kobewi 3ebb5b84a0 Add separate feature tags for editor runtime 2024-04-26 14:44:38 +02:00
Koyper 0881c81c13 Fix non-embedded Windows resizing to match Viewport content scale factor 2024-04-17 09:30:16 -05:00
Rémi Verschelde 0c71ba7801
Merge pull request #89880 from dsnopek/openxr-composition-layers-node3d-drs
Add support for OpenXR composition layers
2024-04-04 17:09:07 +02:00
David Snopek 0f2b804059 Add support for OpenXR composition layers
Co-authored-by: Bastiaan Olij <mux213@gmail.com>
2024-04-04 09:20:23 -05:00
Markus Sauermann 48ea019322 Fix a special case for button masks
In certain situations it is possible that in a `Viewport` the same
mouse button is pressed twice in series without releasing it in
between.
In this case, focus stealing should happen to ensure, that the
mouse button is not sent unintentionally to the previously focused
Control node.
2024-03-28 20:22:49 +01:00
Rémi Verschelde 17c66c0bea
Merge pull request #89805 from AThousandShips/viewport_report
Add missing `RenderInfoType` enum to `Viewport`
2024-03-25 11:18:43 +01:00
A Thousand Ships 8a88e5ea07
Add missing `RenderInfoType` enum to `Viewport` 2024-03-23 14:03:08 +01:00
A Thousand Ships 79ba22a73f
Use `Vector*` component-wise `min/max/clamp` functions where applicable 2024-03-20 13:47:42 +01:00
mnemoli ca23775374 Fix mouse_enter/mouse_exit events when physics_object_picking_first_only is on 2024-03-18 11:19:22 +00:00
Aaron Franke c1e9842afb Organize 2D audio, camera, and physics in Viewport 2024-03-10 13:10:13 -07:00
Rémi Verschelde 99ba2519ea
Merge pull request #88992 from Sauermann/fix-window-mouse-notification
Fix mouse entered notifications
2024-02-29 13:55:12 +01:00
Markus Sauermann d259f979f5 Fix mouse entered notifications
Make sure, that a windows initial state is `mouse_in_viewport = false`.
This makes sure, that the mouse entered notification is sent when the
mouse hovers a window for the first time.

For embedded Windows, `NOTIFICATION_WM_MOUSE_ENTER` is currently sent
twice in a row. Remove one of the places where it is sent.
`Window::_update_mouse_over()` is the correct one, because there it is
also called for native windows.
2024-02-29 00:57:31 +01:00
Michael Alexsander d70c45b5c8
Add option to add built-in strings in the POT generation 2024-02-28 11:34:26 -03:00
smix8 35dafc9fa8 Split monolithic physics class files
Splits monolithic physics class files.
2024-02-27 11:18:16 +01:00
stoofin b6c033fc39 Add all Viewport.debug_draw enum options to dropdown 2024-02-23 23:55:01 -08:00
A Thousand Ships 3a707b1f54
Fix some additional errors with 3D disabled
* Disabled 2D navigation tests as they do not work
* Disabled tests for primitive meshes
* Unbound some `Mesh` methods that rely on 3D resources
* Unexposed `World3D` as it depends on physics (and isn't useful)
* Unexposed some `Viewport` vrs related properties that had unexposed
  methods
2024-02-23 20:58:56 +01:00
Markus Sauermann 8de39911c8 Fix global position for `InputEventMouse` in `viewport::push_input`
Global position doesn't get adjusted within `InputEventMouse::xformed_by()`.
2024-02-18 03:26:09 +01:00
Rémi Verschelde 21f0529aa9
Revert "Update Node::get_configuration_warnings signature"
This reverts commit d3852deaa4.
2024-02-17 19:03:21 +01:00
Michael Alexsander 7b42c24550
Make auto translation inheritable 2024-02-15 16:51:19 -03:00
Silc Lizard (Tokage) Renew 67e38709fd Avoid unqualified-id "near" and "far" in Node3DEditor/Viewport 2024-02-13 18:53:21 +09:00
Rémi Verschelde 5306b917e6
Merge pull request #87164 from 0x0ACB/camera_fix
Rename camera `near` and `far` private members to avoid conflict with `Windows.h` defines
2024-02-12 23:29:22 +01:00
Rémi Verschelde 2b36dcf70a
Merge pull request #75688 from mnemoli/pickone
Add setting for picking only top-most overlapping collision object
2024-02-12 13:33:08 +01:00
RedMser d3852deaa4 Update Node::get_configuration_warnings signature 2024-02-08 23:05:20 +01:00
Markus Sauermann 36c2c4bf0d Remove unused Variable `Viewport::gui_input_group`
The gui input group is not needed during the gui input step.
2024-01-26 23:37:30 +01:00
Yuri Sizov 91ac53ec1b Merge pull request #87385 from Sauermann/fix-subviewport-physics-picking
Fix SubViewport physics picking
2024-01-25 16:27:02 +01:00
Yuri Sizov e0f8cf4acb Merge pull request #77730 from Jummit/fix-subviewport-1
Fix `push_input` events not going through after first pressed mouse event
2024-01-22 20:38:22 +01:00
Markus Sauermann 7b00c136a1 Fix SubViewport physics picking
Apply the logic of `handle_input_locally` for physics picking.
2024-01-19 21:42:41 +01:00
ACB 96b8016a35 Rename camera near and far private members to avoid conflict with Windows.h defines 2024-01-15 12:31:15 +01:00
mnemoli a407219693 Add Viewport setting for picking only first-encountered CanvasItem physics object 2024-01-11 14:18:37 +00:00
kobewi 0e8f90f4c8 Update deferred calls to use Callables 2024-01-09 16:11:47 +01:00
Rémi Verschelde 0d922f61e3
Merge pull request #86220 from Sauermann/fix-embed-subwindow
Fix changing `gui_embed_subwindows` while a child window is displayed
2024-01-03 10:13:03 +01:00
Markus Sauermann 62587d2d19 Fix changing `gui_embed_subwindows` while a child window is displayed
Changing `gui_embed_subwindows` while a child window is displayed can lead
to crashes or other unintended behavior.
This PR adds checks to prevent the change while child windows are
displayed.
2024-01-03 10:09:51 +01:00
Markus Sauermann 4b6516c843 Fix D&D viewport position calculation
It is necessary to transform screen position to viewport position.
2023-12-25 23:32:29 +01:00
Claire Blackshaw fe7725239e Expose a method to get hovered Control in Viewport 2023-12-18 14:53:52 +01:00
Jummit 7957354091 Fix push_input only working the first time
Subviewports didn't update their parent's local_input_handled correctly.

Fixes #76439.
2023-12-02 20:30:26 +01:00
kit 78e1702adb fix crash on hiding grandparent on mouse exit 2023-12-02 14:24:56 -05:00
Markus Sauermann 3de9afc4a9 Fix crash when hiding a Control during mouse-entering
gui.mouse_over can be set to `nullptr` in the `NOTIFICATION_MOUSE_ENTER`-
user-callback a few lines above. This case was previously not handled.
2023-11-23 23:25:00 +01:00
kit d24d73ba31 Make mouse-enter/exit notifications match mouse event propagation
`NOTIFICATION_MOUSE_ENTER` and `NOTIFICATION_MOUSE_EXIT` now includes
the areas of children control nodes if the mouse filters allow it.

In order to check if a Control node itself was entered/exited, the newly
introduced `NOTIFICATION_MOUSE_ENTER_SELF` and
`NOTIFICATION_MOUSE_EXIT_SELF` can be used.

Co-authored-by: Markus Sauermann <6299227+Sauermann@users.noreply.github.com>
2023-11-09 09:11:59 -05:00
clayjohn f672198f5e Revert "Add a Disable 2D property to Viewport"
This reverts commit f6cc2603a1.
2023-10-27 14:45:59 +02:00
Rémi Verschelde a1d7c62df7
Merge pull request #83003 from AThousandShips/null_check_extra
Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable
2023-10-09 15:37:14 +02:00
A Thousand Ships f18aa00e85 Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable 2023-10-08 17:23:33 +02:00
Hugo Locurcio f6cc2603a1
Add a Disable 2D property to Viewport
This is the 2D counterpart to the existing Disable 3D property.
Its functionality is already internally implemented and used,
but it wasn't exposed.
2023-10-07 17:19:15 +02:00
Michael Alexsander 9ee82ebe1d
Fix tooltips behaving incorrectly on `Tree` nodes 2023-09-28 11:18:15 -03:00
Marcel Admiraal 3a7eda8f87 Check if input marked handled before processing additional CollisionObjects 2023-09-26 20:42:15 +02:00
Dario 057367bf4f Add FidelityFX Super Resolution 2.2 (FSR 2.2.1) support.
Introduces support for FSR2 as a new upscaler option available from the project settings. Also introduces an specific render list for surfaces that require motion and the ability to derive motion vectors from depth buffer and camera motion.
2023-09-25 10:37:47 -03:00
Yuri Sizov dd3638d425 Merge pull request #81669 from kleonc/gui-tooltip-transparent-background
Enable transparent background for GUI tooltips
2023-09-15 19:48:37 +02:00
kleonc c66dfd2cfe Enable transparent background for GUI tooltips 2023-09-14 23:39:28 +02:00
Yuri Sizov 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
Rémi Verschelde 8b8b6d1e87
Merge pull request #81006 from KurtBliss/Chance-of-crash-when-Control-overrides-mouse-input-on-Area2D-#79371
Fix possible crash when Control overrides mouse input on Area2D
2023-08-28 15:04:41 +02:00
KurtBliss dbb01bc451 Fixed, chance of crash when Control overrides mouse input on Area2D
Made Viewport::_cleanup_mouseover_colliders queue up mouse_exit and
mouse_shape_exit signals to emit and at the end of the function's
execution to avoid potential crashes.
2023-08-25 17:51:38 -04:00
Rémi Verschelde b24eb34669
Merge pull request #80780 from HolonProduction/sub-window-focus-crash
Fix crash when hiding subwindow during popup of new subwindow
2023-08-21 08:23:23 +02:00
HolonProduction e2cea458a3 Fix crash when hiding subwindow during popup of new subwindow 2023-08-20 17:51:54 +02:00
Rémi Verschelde e73a4a382e
Merge pull request #79201 from Rindbee/fix-setup-state-not-cleared
Clear the previously set state when configuring for a new scene root node
2023-08-17 15:43:38 +02:00
Michael Alexsander de27df5da3
Allow to get a list of visible embedded `Window`s 2023-08-16 10:42:08 -03:00
Markus Sauermann 59c13fea5d Fix nodes receiving mouse events in black bars of `Window`
Previously for InputEvents there was no distinction between
Window-area and Viewport-area.
This was problematic in cases where stretching was used and the Window
contained black bars at the sides of the Viewport.
This PR separates the area of Window and Viewport regarding InputEvents.
2023-08-09 12:34:22 +02:00
Rindbee 4795c3cdfa Clear the previously set state when configuring for a new scene root node
Saving a subscene causes the main scene to be re-instantiated. And the resource
instance in the main scene will be reused when the main scene is re-instantiated.
So for resources with `resource_local_to_scene` enabled, resetting state may be
necessary (at least for `ViewportTexture`).
2023-08-08 23:49:53 +08:00
Rémi Verschelde 46c9a1427d
Merge pull request #80364 from Calinou/control-escape-dismiss-tooltips
Dismiss currently visible or upcoming tooltips when pressing Escape
2023-08-08 16:57:59 +02:00
Rémi Verschelde 1163dac9e3
Merge pull request #80215 from clayjohn/HDR-2D
Add option to enable HDR rendering in 2D
2023-08-08 16:57:33 +02:00
Hugo Locurcio 6307b0be3c
Dismiss currently visible or upcoming tooltips when pressing Escape
This is standard UI behavior in most applications out there.
2023-08-08 07:40:39 +02:00
Rémi Verschelde faaf27f284
Fix various typos with codespell
Also includes typo fixes from #79993, #80068, #80276, and #80303.

Co-authored-by: betalars <contact@betalars.de>
Co-authored-by: spaceyjase <429978+spaceyjase@users.noreply.github.com>
Co-authored-by: Swarkin <102416174+Swarkin@users.noreply.github.com>
Co-authored-by: Raul Santos <raulsntos@gmail.com>
2023-08-07 13:09:47 +02:00
clayjohn 57eb762bae Add option to enable HDR rendering in 2D
This is needed to allow 2D to fully make use of 3D effects (e.g. glow), and can be used to substantially improve quality of 2D rendering at the cost of performance

Additionally, the 2D rendering pipeline is done in linear space (we skip linear_to_srgb conversion in 3D tonemapping) so the entire Viewport can be kept linear.
This is necessary for proper HDR screen support in the future.
2023-08-07 11:24:03 +02:00
Markus Sauermann 1e9d241809 Actually store safe-rect in embedder
`sw` is a copy and not a reference.
Add unit-test for this case.
2023-08-02 17:51:52 +02:00
Markus Sauermann 1c3c17c608 Refactor mouse_entered and mouse_exited notifications
The previous implementation for signals mouse_entered and mouse_exited
had shortcomings that relate to focused windows and pressed mouse buttons.
For example a Control can be hovered by mouse, even if it is occluded by
an embedded window.

This patch changes the behavior, so that Control and Viewport send
their mouse-enter/exit-notifications based solely on mouse position,
visible area, and input restrictions and not on which window has
focus or which mouse buttons are pressed. This implicitly also
changes when the mouse_entered and mouse_exited signals are sent.

This functionality can not be implemented as a part of
Viewport::_gui_input_event, because of its interplay with Windows and
because Viewport::_gui_input_event is based on input and not on
visibility.
2023-08-01 13:28:49 +02:00
Markus Sauermann 7fead979d6 Disable error condition for accessing safe rect
This PR removes the error-message, which is currently expected to happen.
The task of correctly fixing the underlying problem of window popup
closing is more complex, so this PR solves the immediate
error-notification-problem.
2023-07-26 20:21:30 +02:00
Yuri Sizov d50c52652f Merge pull request #79805 from kumikumi/fix-subviewport-cursor
Prevent SubViewportContainer overriding Subviewport's cursor with its own cursor
2023-07-26 18:40:30 +02:00
Yuri Sizov 712f49ec57 Merge pull request #79766 from Sauermann/fix-window-determinant-zero
Add determinant check for minimized windows
2023-07-26 18:40:26 +02:00
Yuri Sizov 1de9171c32 Merge pull request #79443 from Sauermann/fix-ingore-hovering
Fix physics passive hovering with `MOUSE_FILTER_IGNORE`
2023-07-26 18:40:14 +02:00