Commit Graph

2190 Commits

Author SHA1 Message Date
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 59f05ed31a Cleanup unused/underused singleton StringNames 2024-05-14 18:18:29 +02:00
A Thousand Ships ee79386f7b
[Scene] Add SceneStringNames::pressed 2024-05-14 15:51:28 +02:00
kobewi 413c11357d Use Core/Scene stringnames consistently 2024-05-13 23:41:07 +02:00
Yaohua Xiong ed3d311687 Add antialias support for CanvasItem draw primitives
including
- rect, circle; both filled and unfilled.
- polyline, multiline
2024-05-13 19:03:31 +08:00
A Thousand Ships 2f442ff21a
Fix outdated name for `script` `StringName` 2024-05-13 12:39:41 +02:00
Rémi Verschelde 3bb7fd8ac4
Merge pull request #91329 from warriormaster12/dont-do-things-twice
Fix a performance regression when duplicating a node
2024-05-13 12:05:34 +02:00
warriormaster12 f14455fd3d Fix a performance regression when duplicating a node 2024-05-12 21:43:22 +03:00
kobewi a262d2d881 Add shorthand for using singleton string names 2024-05-11 18:53:08 +02:00
kobewi 47aefbb415 Add support for AtlasTexture in draw_polygon() 2024-05-08 19:10:53 +02:00
A Thousand Ships b4c6cc7d82
[Core] Add case-insensitive `String::containsn` 2024-05-08 12:48:01 +02:00
kobewi 5c0f7968e3 Fix crash when adding a child while duplicating a node 2024-05-07 21:56:38 +02:00
Rémi Verschelde e63252b421
Merge pull request #90705 from AThousandShips/foreach_list
Reduce and prevent unnecessary random-access to `List`
2024-05-07 09:04:44 +02:00
A Thousand Ships 86de59d60a
[Core] Add `LocalVector::has` for convenience 2024-05-06 18:03:37 +02:00
A Thousand Ships 955d5affa8
Reduce and prevent unnecessary random-access to `List`
Random-access access to `List` when iterating is `O(n^2)` (`O(n)` when
accessing a single element)

* Removed subscript operator, in favor of a more explicit `get`
* Added conversion from `Iterator` to `ConstIterator`
* Remade existing operations into other solutions when applicable
2024-05-04 16:08:55 +02:00
Bastiaan Olij 9042ddf19f Improvements to VRS/Foveated rendering 2024-05-03 17:20:30 +10:00
bruvzg e5205e589f
[StatusIndicator] Add method to get indicator icon screen rect. 2024-05-02 14:39:33 +03: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
Rémi Verschelde 0b6c29f2d2
Merge pull request #89114 from AThousandShips/vec_elem_scalar
[Core] Add scalar versions of `Vector*` `min/max/clamp/snap(ped)`
2024-05-02 12:46:22 +02:00
Yaohua Xiong 1f2aa17d14
Extend `CanvasItem::draw_circle()` with filled, width, and antialiased options
Make it possible to draw unfilled circle, like draw_rect(). Antialising is only implemented for unfilled version.
2024-05-02 10:42:24 +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
Rémi Verschelde 70247adf25
Merge pull request #89734 from BastiaanOlij/openxr_reorder_wait_frame
OpenXR: Change timing of xrWaitFrame and fix XR multithreading issues
2024-05-01 09:54:51 +02:00
Rémi Verschelde 85062e37ef
Merge pull request #89588 from bruvzg/status_ind_menu_direct
[StatusIndicator] Switch API to use Texture2D instead of Image, improve handling on macOS, add method to set native popup menu directly.
2024-05-01 09:54:44 +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
Rémi Verschelde bd598d5657
Merge pull request #85678 from KoBeWi/editor_walktime
Add separate feature tags for editor runtime
2024-04-26 15:13:16 +02:00
kobewi 3ebb5b84a0 Add separate feature tags for editor runtime 2024-04-26 14:44:38 +02:00
kobewi 0b877a9962 Expose is_part_of_edited_scene() 2024-04-26 11:49:38 +02:00
Rémi Verschelde 3a88373a4c
Merge pull request #86553 from Koyper/fix_popup_panel_content_scaling
Fix non-embedded tooltips, popups and dialogs resizing to match Viewport content scale factors != 1.0
2024-04-18 12:24:11 +02:00
Koyper 0881c81c13 Fix non-embedded Windows resizing to match Viewport content scale factor 2024-04-17 09:30:16 -05:00
Haoyu Qiu 8d1cb7e74c Add project setting for root node auto translate mode 2024-04-16 11:02:04 +08:00
Rémi Verschelde c951421c99
Merge pull request #90268 from RandomShaper/wtp_servers
Use WorkerThreadPool for Server threads (enhanced)
2024-04-15 10:12:00 +02:00
aaronp64 4ed51933f9 Fix Window.hide() crash when force_native changed
Moved force_native = p_force_native assignment to after is_visible() check, to prevent value from changing after window is shown.

Fixes #90609
2024-04-13 14:03:29 -04:00
Bernat Arlandis 0a68876348 Remove some unused SceneTree properties 2024-04-13 00:56:01 +02:00
Pedro J. Estébanez c28f5901c7 Polish interaction between windowing, input and rendering
- Adapt GL make/release API to the current architecture.
- Fix DisplayServer being locked while dispatching input (prevent deadlocks).
2024-04-10 18:47:42 +02:00
ajreckof 248e5bfba2
Revert what needs to be reverted 2024-04-10 09:49:30 +08:00
Fabio Alessandrelli e64aa4d25f [MP] Fix dead code doing unnecessary allocation
Probably a leftover from some old refactor.
2024-04-06 19:48:04 +02:00
Ricardo Buring e6b9161246 Fix per-node physics interpolation setting
The per-node default should be ON.
2024-04-05 10:30:19 +02: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
Rémi Verschelde 4abe9183e3
Merge pull request #89926 from Sauermann/fix-button-mask-special-case
Fix a special case for button masks
2024-04-04 14:35:24 +02:00
Rémi Verschelde 32dcaa0659
Merge pull request #89920 from Sauermann/fix-event-order
Prohibit execution of delayed input events by different means
2024-04-04 14:35:20 +02:00
Rémi Verschelde 2ac88339e4
Merge pull request #89721 from KoBeWi/position_who
Rename some arguments called "position"
2024-04-04 14:31:35 +02:00
Rémi Verschelde 1dacd6a527
Merge pull request #89179 from groud/expose_tile_map_layer
Expose TileMapLayer
2024-04-04 14:31:16 +02:00
Rémi Verschelde f47f4a02c8
Merge pull request #89992 from ajreckof/fix-my-mistake-with-replace-in-update-scene
Fix node duplication in update after external changes.
2024-04-04 02:53:57 +02:00
ajreckof ae472865d0 fix node duplication in update after external changes. 2024-04-03 12:19:38 +02:00
Gilles Roudière 3cd4b2859c Expose TileMapLayer 2024-04-03 11:02:34 +02: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 af08342fd8
Merge pull request #89957 from warriormaster12/regress-dup
Fix regression when duplicating a node with a resource attached
2024-03-28 10:47:39 +01:00
Markus Sauermann 945babc619 Prohibit execution of delayed input events by different means
In some cases it can happen, that the order of input events and
window events is not followed, when input buffering or input accumulation
is active.

The display server order `InputEvent` => window-event gets changed to
window-event => `InputEvent` which becomes problematic in certain
situations.

This PR makes sure, that the order is adhered to by flushing input events
before a window event is sent.
Previously this problem was mitigated by discarding these delayed events.
But this solution was problematic in the setting of android input events.
2024-03-27 20:58:15 +01:00
warriormaster12 9533543aa5 Fix duplicating resources regression 2024-03-27 11:51:29 +02:00
kobewi 25f9f923a1 Rename some arguments called "position" 2024-03-27 01:28:24 +01:00
Rémi Verschelde d66539e485 Merge pull request #89673 from bruvzg/f_na_ed
Do not apply `force_native` to the edited scene windows.
2024-03-25 13:16:03 +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
Rémi Verschelde 9d8697ab01
Merge pull request #89686 from kleonc/unique-node-names-check-owned-then-in-owner
Always look for unique node names in owner if not found in owned nodes
2024-03-24 01:21:28 +01:00
Rémi Verschelde 1d4907243e
Merge pull request #89628 from twobitadder/whoops_no_internals_pls
Fix crash on `reparent()` with Node containing internal children
2024-03-24 01:19:34 +01:00
Rémi Verschelde cd4e4c0fcc
Merge pull request #89111 from AThousandShips/vec_use
Use `Vector*` component-wise `min/max/clamp` functions where applicable
2024-03-24 01:14:51 +01:00
Rémi Verschelde e92806c7e7
Merge pull request #88424 from rburing/fti_2d
Physics interpolation (2D)
2024-03-24 01:13:53 +01:00
Rémi Verschelde 8c470749f1
Merge pull request #87387 from warriormaster12/dup_prop_refactor
Fix property of type Node duplication when script is attached to a child node
2024-03-24 01:12:57 +01:00
A Thousand Ships 8a88e5ea07
Add missing `RenderInfoType` enum to `Viewport` 2024-03-23 14:03:08 +01:00
Ricardo Buring 2ed2ccc2d8 Fixed Timestep Interpolation (2D)
Adds fixed timestep interpolation to the rendering server (2D only).
Switchable on and off with a project setting (default is off).

Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-03-23 12:28:36 +01:00
A Thousand Ships 79ba22a73f
Use `Vector*` component-wise `min/max/clamp` functions where applicable 2024-03-20 13:47:42 +01:00
bruvzg 0587a1d217
[StatusIndicator] Switch API to use Texture2D instead of Image, improve handling on macOS, add method to set native popup menu directly. 2024-03-20 11:56:07 +02:00
kleonc 95ced4bbdc Always look for unique node names in owner if not found in owned nodes 2024-03-19 22:13:10 +01:00
bruvzg 92d69da7a6
Do not apply "force_native" to the edited scene windows. 2024-03-19 12:39:50 +02: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
twobit b9bade8db1 fixes crash on nodes with internal children 2024-03-17 22:44:05 -04:00
warriormaster12 9851c1bdd8 Fix property duplication when duplicating a parent node 2024-03-17 09:57:38 +02:00
Rémi Verschelde 453485aede
Merge pull request #89270 from Repiteo/enforce-typename-in-templates
Enforce template syntax `typename` over `class`
2024-03-14 22:34:37 +01:00
Aaron Franke 6aac3e4a16 Disable all 3D nodes, physics, and resources when compiling without 3D 2024-03-11 01:00:55 -07:00
Rémi Verschelde ba062e1f46
Merge pull request #89298 from Mickeon/CanvasItem-error-clean-as-hell
Make CanvasItem's "drawing outside of NOTIFICATION_DRAW" error a macro
2024-03-10 21:12:57 +01:00
Aaron Franke c1e9842afb Organize 2D audio, camera, and physics in Viewport 2024-03-10 13:10:13 -07:00
Micky e08fb19bd1 Make CanvasItem's "drawing outside of NOTIFICATION_DRAW" error a macro 2024-03-09 22:47:54 +01:00
Thaddeus Crews 9903e6779b
Enforce template syntax `typename` over `class` 2024-03-07 22:39:09 -06:00
bruvzg cfdb968848
[Window] Allow to override viewport and project settings and force use of native window. 2024-03-04 23:06:27 +02:00
Micky 7b3e1a5bde Optimize SceneTree's `change_scene_to_file` autocompletion 2024-03-01 15:12:52 +01:00
Rémi Verschelde c1377920cd
Merge pull request #86743 from Mickeon/autocompletion-optimise-object
Optimise comparisons for Object's `get_argument_options`
2024-03-01 14:56:06 +01:00
Micky cd2032a90b Optimise Object's `get_argument_options` 2024-02-29 18:00:54 +01: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
Rémi Verschelde 9cf48f5365
Merge pull request #88963 from adamscott/hide-to-advanced-snap-2d-vertices
Move `rendering/2d/snap/snap_2d_vertices_to_pixel` setting to advanced view
2024-02-29 13:54:46 +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
Adam Scott dcf4cf79fd
Hide snap_2d_vertices_to_pixel setting to advanced 2024-02-28 10:59:41 -05:00
Michael Alexsander d70c45b5c8
Add option to add built-in strings in the POT generation 2024-02-28 11:34:26 -03:00
Rémi Verschelde 3dca3c22fc
Merge pull request #88497 from Sauermann/fix-owner-import
Fix owner when importing meshes
2024-02-27 21:23:00 +01:00
smix8 35dafc9fa8 Split monolithic physics class files
Splits monolithic physics class files.
2024-02-27 11:18:16 +01:00
Markus Sauermann c58607c32f Fix owner when importing meshes
Handle the case correctly, that a child of a replaced node has
as owner an ancestor of the replaced node.
2024-02-26 22:24:57 +01:00
Aaron Franke c399424db9
Move 3D-only resources to their own folder 2024-02-26 05:23:04 -06:00
Rémi Verschelde 10694ea027
Merge pull request #88755 from stoofin/debug-draw-enum-names
Add all `Viewport.debug_draw` enum options to dropdown
2024-02-26 10:49:12 +01:00
kobewi 75ba837612 Fix inefficient list iteration in Node 2024-02-24 23:18:44 +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
Rémi Verschelde 3ce9ae71fc
Merge pull request #84906 from /fix-some-defvals 2024-02-23 11:29:22 +01:00
Raul Santos 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
A Thousand Ships f06222e487
[Physics] Fix export with 3D disabled 2024-02-22 16:23:48 +01:00
Michael Alexsander 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
Rémi Verschelde 73758e093e
Merge pull request #88456 from sabslikesobs/master
Expose pixel snapping settings add pixel-art notes
2024-02-20 19:34:48 +01:00