Commit Graph

1857 Commits

Author SHA1 Message Date
angel-721 e347d7d64d Rename internal root canvas group to start with underscore 2023-04-16 17:42:21 -06:00
Aaron Franke 8eb9986dc5
Make `Node::get_children()` public 2023-04-15 21:59:25 -05:00
Rémi Verschelde 347a8e20ae
Merge pull request #69324 from RedMser/advanced-settings-errors
Make it easier to solve warnings/errors referring to project settings
2023-04-11 19:39:53 +02:00
Yuri Sizov c48219f51e
Merge pull request #73658 from smix8/do_not_stop_the_entire_server_cause_you_want_to_pause_4x
Keep NavigationServer active while SceneTree is paused
2023-04-10 16:24:26 +02:00
Yuri Sizov fd6a743823 Always cache parent visibility in CanvasItem 2023-04-10 16:18:46 +02:00
smix8 4b0dee080e Keep NavigationServer active while SceneTree is paused
Keep NavigationServer active while SceneTree is paused.
2023-04-10 15:30:22 +02:00
kleonc d159123633 Fix recursive Node.find_children 2023-04-09 09:15:21 +02:00
Juan Linietsky ab5fc22f67 Optimize Node children management
* Adding and removing child nodes is now constant time, speed up should be huge.
* Searching for node paths as in ("path/to/node") should be far faster too.

This changes the children management and makes it a hashmap, optimizing most StringName based operations.
Most operations should be severe speed up without breaking compatibility.

This should fix many issues regarding to node access performance, and may also speed up editor start/end, but benchmarks are needed. So if you want to test, please make some benchmarks!

Further performance improvements will be done in the future by removing NOTIFICATION_MOVED_IN_PARENT and replacing by something less laborious.
2023-04-08 10:54:28 +02:00
Rémi Verschelde c151d3231f
Merge pull request #75760 from reduz/optimize-node-add-child-validation
Optimize Node::add_child validation
2023-04-07 18:20:28 +02:00
Juan Linietsky 223ce4fcb9 Optimize Node::add_child validation
Adding 10k nodes is almost twice as fast.
2023-04-07 13:18:47 +02:00
Samuele Panzeri 404f24b5c4 Update sibling indices after a node is removed.
With change 104392e the code to update node indices on removal was erronously removed.
The out of date indices would cause crashes while selecting nodes in a graph editor (e.g. animation tree) and selected nodes are oftern pushed to beginning or end of the child list for the parent.
2023-04-06 20:47:57 +02:00
Juan Linietsky 104392ef4e Remove NOTIFICATION_MOVED_IN_PARENT
* This notification makes node children management very inefficient.
* Replaced by a NOTIFICATION_CHILDREN_CHANGED (and children_changed signal).
* Changed Canvas code (and similar) to use the above signal, to perform more efficiently.

This PR breaks compatibility (although this notification was very rarely used, even within the engine), but provides an alternate way to do the same.
It is required for the changes in #75627 to be entirely effective.
2023-04-06 13:57:13 +02:00
Yuri Sizov 91ff34b5b5 Add a warning when trying to access theme items too early 2023-04-03 18:01:10 +02:00
Rémi Verschelde b85fc4aa6d
Merge pull request #73646 from KoBeWi/squish
Prevent off-screen controls in editor
2023-04-03 17:07:54 +02:00
RedworkDE aa604c5c47 Do not clamp non-embedded window size to embedder 2023-03-29 22:35:07 +02:00
Yuri Sizov f818d2b98f
Merge pull request #75141 from rcorre/rrc/dialog-pos 2023-03-28 10:54:37 +02:00
Haoyu Qiu 5a5fd33e42 More i18n improvements
* Make placeholder in editor layout dialog translatable.
* Make messages in scene import settings dialog translatable.
* Mark theme override property categories for translation.
2023-03-27 22:24:01 +08:00
Ryan Roden-Corrent 894ce41180
Apply clamp_to_embedder on parent resize and popup.
Fixes #75084.

The clamp_to_embedder setting was added in 8be16e0704,
but was not set on any of the in-editor dialogs.

This patch sets `clamp_to_embedder` on editor dialogs so they cannot be dragged out of the frame.
This also modifies `clamp_to_embedder` so a window is clamped to the bounds of an embedder when
it pops up and when the parent is resized.
2023-03-27 07:08:29 -04:00
Yuri Sizov c95b88cbe9
Merge pull request #75238 from kleonc/canvas-item-fix-notifications-order-on-enter-tree
`CanvasItem` Fix `ENTER_CANVAS` / `VISIBILITY_CHANGED` notifications order when entering tree
2023-03-27 13:00:41 +02:00
RedMser ed960453b7 Make solving project setting errors easier
Show full project setting path in error messages.
Force filtering for advanced settings if filter is not empty.
2023-03-27 08:10:35 +02:00
kobewi 8f8178bda6 Fix auto-translations in editor 2023-03-22 23:57:12 +01:00
kleonc 6e3820fd4d CanvasItem Fix ENTER_CANVAS / VISIBILITY_CHANGED notifications order when entering tree 2023-03-22 20:01:22 +01:00
David Snopek 4d13be3c5e Add missing documentation for MultiplayerPeerExtension 2023-03-20 08:08:59 -07:00
Markus Sauermann 8836f2160a Move call of `push_unhandled_input` from `Window` to `Viewport`
This solves the problem, that mouse events get sent to SubViewports
even if they are outside of the visible area of the SubViewport.

This changes makes SubViewportContainer::unhandled_input redundand.
Shortcut Events now need to be distributed via push_input, in order for
them to be able to reach SubViewports.
2023-03-17 19:22:24 +01:00
Danil Alexeev ba985ecf3f
Fix `draw_multiline_colors()` for `width < 0` 2023-03-14 09:43:56 +03:00
Yuri Sizov 81e2b020ba Prevent infinite loops when printing orphan nodes 2023-03-09 16:47:38 +01:00
Rémi Verschelde 0ef3d1bf56
Merge pull request #73188 from Sauermann/fix-inconsistent-viewport-size
Fix some ways to create inconsistent Viewport size states
2023-03-07 12:04:00 +01:00
Rémi Verschelde 0b98b470cc
Merge pull request #73716 from bruvzg/improve_locale_selection
Improve layout direction/locale automatic selection.
2023-03-06 10:57:56 +01:00
Rémi Verschelde 0885e4b931
Merge pull request #73365 from bruvzg/no_transient_children
Automatically reparent editor message dialogs to avoid error spam.
2023-03-02 11:41:17 +01:00
Fabio Alessandrelli f9bcaccc11 [MP] Fix orphan StringName on close.
Use a static StringName for the registered default interface name.
2023-02-27 09:45:16 +01:00
bruvzg 82d7923c65
Improve layout direction/locale automatic selection. 2023-02-22 08:37:14 +02:00
bruvzg 921f3b7589
Automatically reparent editor message dialogs to avoid error spam. 2023-02-21 12:32:11 +02:00
kobewi 55b50703d7 Prevent off-screen controls in editor 2023-02-20 20:25:39 +01:00
bruvzg 7246b229e1
Set RTL minimal dash size to 2.0, add invalid dash size error to the `draw_dashed_line`. 2023-02-17 08:53:08 +02:00
Rémi Verschelde b90d70d592
Merge pull request #72764 from Sauermann/fix-color-picking
Fix Color Picking
2023-02-17 00:33:20 +01:00
bruvzg 4dfa161120
Add dash and step size checks to draw_dashed_line. 2023-02-16 17:49:18 +02:00
clayjohn 081b31d200 Clear Window before blitting Viewport in gl_compatibility renderer 2023-02-14 10:30:02 -08:00
Rémi Verschelde 830eff64a7
Merge pull request #68027 from ktxyz/window-on-top
Update sub_windows order with respect to FLAG_ALWAYS_ON_TOP
2023-02-14 13:40:24 +01:00
Thomas ten Cate 8a17f94ab2 Some fixes for initial window position and size
- X11: set main window position and size hints correctly
- All platforms: update minimum and maximum size of main window at
  startup

Fixes #70984
2023-02-14 12:15:14 +01:00
bruvzg a000c64eea
Cleanup Window callbacks before destroying in to avoid callback calls with invalid object. 2023-02-13 20:39:17 +02:00
Markus Sauermann 34a7fc7447 Fix some ways to create inconsistent Viewport sizes
In the editor, it was possible to set the size of a `SubViewport` even
in cases where a parent `SubViewportContainer` had stretch enabled.

This PR disables editing a `SubViewport.size` while the parent disallows
it and it makes necessary adjustments during `NOTIFICATION_ENTER_TREE`.
2023-02-13 08:19:00 +01:00
Rémi Verschelde ab2952580c
Merge pull request #73040 from Rindbee/popup_centered_consider_current_size
Calling popup_center* with the default size will use the current size
2023-02-11 14:37:54 +01:00
Rindbee 593598c592 Calling popup_center* with the default size will use the current size 2023-02-11 18:53:53 +08:00
Rémi Verschelde 97afa41da3
Merge pull request #73000 from Sauermann/fix-editor-viewport-size-zero-crash
Fix crash in editor when setting `SubViewport.size` to zero
2023-02-10 15:06:57 +01:00
Markus Sauermann 5bb66d3cfb Fix scene reload crash caused by mouse cursor update
After a scene reload a mouse cursor updates is performed via a
InputEventMouseMotion, that is exposed to the user.
The state of Input is however not adjusted to this InputEventMouseMotion
which can lead to inconsistencies.
This PR makes sure, that it is not exposed to the user.
It utilizes the method of Viewport::_process_picking for marking
events that are not sent to the user, so that this function doesn't
need to be changed.
2023-02-10 01:16:23 +01:00
Markus Sauermann d249370cd7 Fix crash in editor when setting `SubViewport.size` to zero
`Viewport::_set_size` now verifies, that the minimum size is at least 2x2.
Also fix `RendererViewport::viewport_set_size` fail condition.
2023-02-10 00:25:45 +01:00
Markus Sauermann 88f4e5cc94 Fix that `popup_centered` didn't take the window's size into consideration 2023-02-09 22:05:39 +01:00
Markus Sauermann 888add8418 Fix Color Picking
With the 4.x-introduction of Windows the previous method for
color picking was no longer working.

This PR uses the following approach to reintroduce color-picking.
When the Color-Picking-Button is pressed, a quasi-screenshot of the
Window-content is created and displayed in a new Popup-Window.
This new Window allows selecting colors by Mouse-Click.
A Preview of the targeted Color is also displayed.
2023-02-09 01:00:54 +01:00
Danil Alexeev b8eda519d0
Optimize `draw_dashed_line()` and `draw_rect()` 2023-02-08 10:44:12 +03:00
Rémi Verschelde 929333fe26
Merge pull request #62179 from Rindbee/fix-popup_center-off-center
Use min_size/max_size to limit window size and position while popup center
2023-02-07 16:30:41 +01:00
Rémi Verschelde 743e26d4f9
Merge pull request #72829 from Sauermann/fix-code-simplifications
Some code simplifications
2023-02-07 16:30:22 +01:00
Markus Sauermann 826e54fa73 Some code simplifications
1. `number_width` isn't used later
2. `return_type` is used only once
3. AudioServer::get_singleton()->get_channel_count() always returns a channel_count of 1 or larger
4. negative `aa->backward` conditional
5. `current_canvas` == `find_world_2d()->get_canvas()`
6. identical if `render_shadows`
2023-02-07 14:30:16 +01:00
Rindbee c73844f117 Use min_size/max_size to limit the window size and the position while popup center 2023-02-07 21:28:26 +08:00
Markus Sauermann 5312d83f3b Fix Viewport::get_mouse_position for SubViewports
SubViewports don't have a cached mouse position available.
This PR calculates the mouse position from the screen position of
the mouse cursor.
2023-02-07 13:54:47 +01:00
Rémi Verschelde cd0f1e9b10
Merge pull request #72740 from Sauermann/fix-event-device-id
Fix mouse/drag/touch InputEvents having no device id
2023-02-06 23:51:26 +01:00
Markus Sauermann 8748f4dcaa Fix mouse/drag/touch InputEvents having no device id
Some internally created emulated/instantiated events didn't have a
device id. This PR sets for these cases a device id.

Also rename `DEVICE_ID_TOUCH_MOUSE` to the more generic
`DEVICE_ID_EMULATION`.
2023-02-06 22:49:42 +01:00
Markus Sauermann 262d84fa90 Fix MOUSE_FILTER_STOP not affecting emulated mouse events
Touch and Drag events are now stopped by MOUSE_FILTER_STOP
2023-02-06 22:31:03 +01:00
Rémi Verschelde 82ff7b4bce
Merge pull request #68492 from Sauermann/fix-picking-sort
Fix propagation order for 2D physics picking events
2023-02-06 15:38:38 +01:00
Markus Sauermann 6e855e3820 Fix propagation order for 2D physics picking events
This patch adds a viewport-configuration-option for sorting
physics-picking events by the Z-Index and the scene tree position
of the collision objects.
2023-02-04 22:44:36 +01:00
kobewi 7331750618 Fix Camera2D crash due to ParallaxBackground node 2023-02-03 15:36:08 +01:00
Markus Sauermann e3e9da78e8 Remove `Viewport::_get_input_pre_xform`
This function is only relevant for `Window`. So this PR moves
the functionality to the `Window`-class.
2023-02-02 22:03:52 +01:00
Rémi Verschelde a16b0fec40
Merge pull request #72618 from Sauermann/fix-simplify-set-size
Simplify Viewport::_set_size
2023-02-02 21:05:51 +01:00
Markus Sauermann 6743ac34d3 Simplify Viewport::_set_size
`Viewport.to_screen_rect` is used only in a single location to compare it
to `Rect2i()`.

When called from `SubViewport`, `to_screen_rect` is always equal to `Rect2i()`.
When called from `Window`, `to_screen_rect` is always different from `Rect2i()`.

So the comparison `to_screen_rect != Rect2i()` can be replaced by
`Object::cast_to<Window>(this)`.

This allows the removal of `Viewport.to_screen_rect` and the simplification of
`Viewport::_set_size`.
2023-02-02 19:09:14 +01:00
Markus Sauermann 3bc426c9d8 Fix toplevel nomenclature
toplevel was 3.x
top_level is 4.x
2023-02-02 17:37:41 +01:00
kobewi 724d6581d6 Fix Camera2D crashes 2023-02-01 23:49:02 +01:00
Rémi Verschelde e52213e2fa
More codespell fixes, do more changes from previous ignore list 2023-02-01 12:11:36 +01:00
Rémi Verschelde 2852d5e613
Merge pull request #67331 from Sauermann/fix-subviewport-no-stretch-update
Fix stretch transform when resizing SubViewports
2023-02-01 11:10:01 +01:00
Rémi Verschelde f7397a5ac6
Merge pull request #58610 from Sauermann/fix-physics-mouse
Fix execution of physics picking events at unexpected times
2023-02-01 09:41:43 +01:00
Rémi Verschelde 394bb0ee2b
Fix various typos with codespell
Finally do the childs -> children rename too.
2023-02-01 08:45:41 +01:00
Markus Sauermann 8182f29d40 Fix stretch transform when resizing SubViewports
Move calculation of stretch transform from outside to inside
of `Viewport::_set_size` function.
2023-02-01 08:34:40 +01:00
Rémi Verschelde d9ade633b3
Merge pull request #71936 from akien-mga/remove-some-unused-signals
Remove some unused signals
2023-02-01 07:53:52 +01:00
Rémi Verschelde e8240031e7
Merge pull request #71479 from raulsntos/virtual-return-type
Use enum instead of int in virtual methods return type
2023-02-01 07:45:28 +01:00
Rémi Verschelde 51414fc987
Merge pull request #66906 from Sauermann/fix-prohibit-inconsistent-size-state
Prohibit inconsistent size state for SubViewport
2023-02-01 07:26:00 +01:00
Markus Sauermann decbda68d7 Prohibit inconsistent size state for SubViewport
Prohibit size changes of SubViewports with parent SubViewportContainers that have stretch mode enabled.
2023-01-31 22:53:43 +01:00
Raul Santos 9e9eac4676
Use enum instead of int in virtual methods return type 2023-01-31 19:06:49 +01:00
Rémi Verschelde 14a4408e02
Merge pull request #65698 from KoBeWi/cameraman
Rework how current Camera2D is determined
2023-01-31 18:56:20 +01:00
Rémi Verschelde b342dcdf04
Remove some unused signals
Part of #37604.
2023-01-31 18:54:04 +01:00
Rémi Verschelde 2b710bc336
Fix MSVC shadow local warning 2023-01-31 18:06:21 +01:00
Rémi Verschelde 1c42e141d0
Merge pull request #59310 from Sauermann/proposal-event-transform
Calculate window input event transform only on window change
2023-01-31 15:57:07 +01:00
Rémi Verschelde 4cfdd25384
Merge pull request #67507 from Sauermann/fix-toplevel-root-control-node
Fix event propagation to child after set_as_toplevel
2023-01-31 15:55:46 +01:00
Rémi Verschelde bde3310f02
Merge pull request #71995 from Faless/net/4.x_tls_verify
[NET] Refactor TLS configuration.
2023-01-30 13:28:31 +01:00
Rémi Verschelde 2e0d9efb72
Merge pull request #72115 from AThousandShips/clip_children_fix
Hide `clip_children` for some non-drawn CanvasItems
2023-01-30 10:02:54 +01:00
Ninni Pipping bbf203bc32 Hide clip_children for non-drawn CanvasItems 2023-01-30 08:22:06 +01:00
Hugo Locurcio 9f026d5274
Fix Editor Description tooltip not changing until scene is reopened
You still need to select another node to see the tooltip updated first,
but you no longer need to save and reopen the scene to view the updated
tooltip.
2023-01-30 00:18:13 +01:00
Fabio Alessandrelli adba870534 [NET] Refactor TLS configuration.
Use a TLSOptions configuration object which is created via static
functions.

- "TLSOptions.client": uses the standard CA and common name verification.
- "TLSOptions.client_unsafe": uses optional CA verification (i.e. if specified)
- "TLSOptions.server": is the standard server configuration (chain + key)

This will allow us to expand the TLS configuration options to include
e.g. mutual authentication without bloating the classes that uses
StreamPeerTLS and PacketPeerDTLS as underlying peers.
2023-01-28 11:08:02 +01:00
Rémi Verschelde aae96945fa
Merge pull request #71470 from YeldhamDev/window_fixes
Fix some small bugs in the `Window` node
2023-01-27 19:26:31 +01:00
Markus Sauermann b15a3ea3a4 Added assertion check 2023-01-26 16:10:32 +01:00
Rémi Verschelde 058c61b5b3
Merge pull request #68007 from Sauermann/fix-3d-capture
Fix event-content and mouse-signals with 3D-capture-on-drag
2023-01-26 16:00:26 +01:00
Rémi Verschelde 13e20fed99
Merge pull request #68627 from Sauermann/fix-tooltip-position
Fix position of Tooltips
2023-01-26 16:00:14 +01:00
Markus Sauermann 83fa14a5a9 Include the Window-transform into Viewport::get_final_transform 2023-01-26 15:30:44 +01:00
Markus Sauermann c4ed247f5f Fix position of Tooltips
CanvasItem::get_screen_transform returns a transform from the CanvasItem
to the coordinate system, where a Popup - created as a child of the
CanvasItem - should be opened.
get_screen_transform makes some simplifications, that work well, when used
in the editor, but not in general cases.

Since Popups like Tooltips are now used more commonly in projects,
it becomes necessary to correct these simplifications.

This solution introduces Viewport::get_popup_base_transform, which makes
the necessary calculations.
2023-01-26 15:15:14 +01:00
Aaron Franke 2bc0bcbd26
PropertyUsage: Rename "DO_NOT_SHARE_ON_DUPLICATE" to "ALWAYS_DUPLICATE" 2023-01-24 16:05:07 -06:00
Yuri Sizov fab9926a95
Merge pull request #65137 from dalexeev/editor-naming
Rearrange `editor/naming/*` project settings
2023-01-24 22:26:03 +03:00
Rémi Verschelde 11e2278844
Merge pull request #57606 from SaracenOne/update_on_reimport
Update instances of scenes which have been reimported.
2023-01-23 15:35:44 +01:00
Rémi Verschelde 5b1df48c6c
Convert en_GB spelling to en_US with codespell 2023-01-23 11:02:20 +01:00
Rémi Verschelde cd031fd31a
Merge pull request #71663 from bruvzg/init_pos_x
Reorganize main and sub-window initial position properties.
2023-01-22 11:25:58 +01:00
Rémi Verschelde 229c82690d
Merge pull request #70294 from KoBeWi/treedulate
Add a method to get global modulate
2023-01-21 20:51:42 +01:00
Rémi Verschelde 7b622ce6e8
Merge pull request #71021 from reduz/prevent-physics-callback-removal
Error when removing a physics node during a physics callback
2023-01-21 11:28:02 +01:00
Rémi Verschelde a83093fa80
Merge pull request #71692 from HalcyonGarside/viewport-debug-draw-fix
Fix incorrect Viewport Debug Draw effects
2023-01-20 08:49:21 +01:00
Rémi Verschelde 9fc40123ab
Merge pull request #71679 from kleonc/draw_polyline_line_strip
`CanvasItem::draw_polyline` Support thin polylines drawn using line strip
2023-01-20 08:48:56 +01:00
Rémi Verschelde 360b61084a
Merge pull request #41239 from dalexeev/fix_draw_rect
Fix `CanvasItem.draw_rect` function with `filled = false`
2023-01-19 22:49:23 +01:00
HalcyonGarside ef35c4002c Add 'Lighting' to list of Debug Draw viewport options 2023-01-19 15:23:59 -05:00
kleonc 728c51e362 CanvasItem::draw_polyline Support thin polylines drawn using line strip 2023-01-19 21:08:25 +01:00
bruvzg aade5abd4f
Reorganize main and sub-window initial position properties. 2023-01-19 13:44:06 +02:00
Michael Alexsander 52b077ca28 Fix some small bugs in the `Window` node 2023-01-18 21:20:49 -03:00
Rémi Verschelde 2050f59e3a
Merge pull request #71623 from kleonc/draw_arc_clamp_to_single_circle
`CanvasItem::draw_arc` Clamp angle difference so arc won't overlap itself
2023-01-18 22:28:24 +01:00
kleonc 43fc483e6c CanvasItem::draw_arc Clamp angle difference so arc won't overlap itself 2023-01-18 15:16:22 +01:00
Mai Lavelle a058cedb53 Fix crash on touch release 2023-01-17 19:12:55 -05:00
Danil Alexeev c046bb8389
Fix `CanvasItem.draw_rect` function with `filled = false` 2023-01-17 09:15:47 +03:00
SaracenOne 4628736894 Update instances of scenes which have been reimported. 2023-01-16 13:46:33 -08:00
Rémi Verschelde ae3ca04aba
Merge pull request #69598 from Sauermann/fix-focus-inverse
Calculate the mouse focus inverse transform only when needed
2023-01-16 22:11:23 +01:00
Rémi Verschelde 47689c7d51
Merge pull request #71502 from bruvzg/tooltip_clickthrough
Add `WINDOW_FLAG_MOUSE_PASSTHROUGH` flag and enabled it for tooltips.
2023-01-16 12:48:45 +01:00
Danil Alexeev a8cbb6245b
Fix scaling issue in `draw_line` and similar methods 2023-01-16 12:49:58 +03:00
bruvzg 34b34b104c
Add `WINDOW_FLAG_MOUSE_PASSTHROUGH` flag and enabled it for tooltips. Expose `window_set_mouse_passthrough` to `Window`. 2023-01-16 11:42:49 +02:00
Rémi Verschelde 55bf948fe7
Fix change_scene memory leak due to duplicate instantiation
Regression from #71105.
Fixes #71363.
2023-01-15 14:05:15 +01:00
bruvzg 9b2843f14f
Improve dashed line alignment and make it optional. 2023-01-13 10:30:12 +02:00
Rémi Verschelde f79c58aac5
Merge pull request #71209 from bruvzg/ed_progress_reparent
Automatically reparent editor progress dialog to avoid error spam.
2023-01-13 00:29:48 +01:00
Danil Alexeev 8f706be6fa
Rearrange `editor/naming/*` project settings 2023-01-12 11:41:13 +03:00
Rémi Verschelde baae87e307
Merge pull request #71105 from reduz/unload-current-scene
Add SceneTree.unload_current_scene()
2023-01-11 09:46:33 +01:00
bruvzg 19293d1813
Automatically reparent editor progress dialog to avoid error spam. 2023-01-11 10:13:21 +02:00
Juan Linietsky e5f2c442c7 Add SceneTree.unload_current_scene()
Provides an obvious way to unload the currently loaded scene (which is nowhere to be found in the docs).
The SceneTree.change_scene_to() method must now always provide a valid PackedScene.

Fixes #63565.
2023-01-10 14:02:06 +01:00
bruvzg ca8b762797
Add Node::get_window() method. 2023-01-10 11:10:46 +02:00
Rémi Verschelde dce8cdbca8
Merge pull request #70863 from bruvzg/win_init_min
Set main window min. size via Window object instead of DisplayServer to preserve it during window updates.
2023-01-09 23:08:52 +01:00
Markus Sauermann 0d6d5e6421 Calculate the mouse focus inverse transform only when needed
Revival of #49158

Co-authored-by: Marcel Admiraal <madmiraal@users.noreply.github.com>
2023-01-09 21:35:38 +01:00
Yuri Sizov 0ca5a72e90 Clarify some parent item checks in CanvasItem 2023-01-09 19:59:55 +03:00
Juan Linietsky 2b815df3c1 Use BitField<> in core type masks
* All core types masks are now correctly marked as bitfields.
* The enum hacks in MouseButtonMask and many other types are gone. This ensures that binders to other languages non C++ can actually implement type safe bitmasks.
* Most bitmask operations replaced by functions in BitField<>
* Key is still a problem because its enum and mask at the same time. While it kind of works in C++, this most likely can't be implemented safely in other languages and will have to be changed at some point. Mostly left as-is.
* Documentation and API dump updated to reflect bitfields in core types.
2023-01-08 22:17:40 +01:00
Rémi Verschelde d642274f75
Merge pull request #70939 from bruvzg/win_screen_2
Add support for the custom initial screen for the main window, fix primary screen detection.
2023-01-07 13:21:36 +01:00
Rémi Verschelde 3579d7a9f7
Merge pull request #36301 from KoBeWi/daddy_node
Add reparent methods to Node
2023-01-07 13:20:56 +01:00
Juan Linietsky 398e73c689 Error when removing a phycics node during a physics callback
* This behavior is not allowed, the error text suggests using call_deferred().
* Added a check in Node::remove_child to prevent future crashes of this type.
* Fixed a performance regression introduced by #36244.

Fixes #63718, probably other crashes too.
2023-01-07 12:57:24 +01:00
bruvzg 2718a7b7d3
Add support for the custom initial screen for the main window, fix primary screen detection. 2023-01-07 11:14:35 +02:00
Rémi Verschelde 163f6f5fe8
Merge pull request #68429 from KoBeWi/PropertySettings
Add PropertyInfo overload for GLOBAL_DEF
2023-01-06 22:59:29 +01:00
Rémi Verschelde d95794ec8a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
Rémi Verschelde 8791e333da
Merge pull request #70624 from bruvzg/cur_sc
Improve `window_set_current_screen` and fix secondary window initial mode and positions.
2023-01-03 15:56:05 +01:00
bruvzg 06551dfa3a
Set main window min. size via Window object instead of DisplayServer to preserve it during window updates. 2023-01-03 09:25:45 +02:00
Adam Scott ea33001b95 Add safety-checks before some servers `free()` 2022-12-29 16:23:38 -05:00
bruvzg f7955633de
Improve `window_set_current_screen` and fix secondary window initial mode and positions. 2022-12-29 09:43:39 +02:00
Aaron Franke 3161647dab
Fix CanvasItem Z-index referring to Node2D 2022-12-19 20:59:14 -06:00
Rémi Verschelde adc1096b19
Merge pull request #70219 from bruvzg/msdf_outline_scaling
Scale MSDF font outline with the font size and MSDF source size to match dynamic font behavior.
2022-12-19 16:26:56 +01:00
Rémi Verschelde f29f3db419
Merge pull request #59682 from Sauermann/fix-following-viewport-transform
Include the follow-viewport-transform into CanvasLayer transform calculations
2022-12-19 16:26:19 +01:00
kobewi 32b0770a73 Add a method to get global modulate 2022-12-19 11:51:37 +01:00
Markus Sauermann 2da2220da7 Include the following-viewport-transform into CanvasLayer transforms
The following-viewport-transform was missing from several calculations
2022-12-18 22:44:34 +01:00
bruvzg 20d9457f9d
Scale MSDF font outline with the font size and MSDF source size to match dynamic font behavior. 2022-12-17 22:47:54 +02:00
Rémi Verschelde a1f481a7d6
Merge pull request #70202 from Calinou/viewport-transparent-background-rename-project-setting
Move transparent background project setting to a subsection
2022-12-17 20:56:19 +01:00
Hugo Locurcio a3eac5fc7c
Move transparent background project setting to a subsection
This prevents the project setting from being located directly within
a root category, which is confusing from an UX perspective in the
project settings editor.
2022-12-17 18:45:21 +01:00
Rémi Verschelde 8be126272f
Merge pull request #70075 from Sauermann/fix-missing-shortcut-handled-check
Fix missing check if shortcut event is handled for Control-nodes
2022-12-16 13:47:39 +01:00
Haoyu Qiu e173710963 Fix possible Tween leak on exit 2022-12-15 19:09:09 +08:00
Markus Sauermann 57ff04278b Fix missing check if shortcut event is handled for Control-nodes
Control-nodes without a shortcut-context were missing a check if
the event was handled, so that a single shortcut-event was passed to
multiple Control-nodes.
2022-12-14 22:22:24 +01:00
Rémi Verschelde f1edd03d4c
Merge pull request #69718 from groud/finally_rename_gdnative_to_gdextension
Rename all gdnative occurences to gdextension
2022-12-12 11:43:59 +01:00
Gilles Roudière be1c9d677d Rename all gdnative occurences to gdextension
Non-exhaustive list of case-sensitive renames:

GDExtension -> GDNative
GDNATIVE -> GDEXTENSION
gdextension -> gdnative
ExtensionExtension ->Extension (for where there was GDNativeExtension)
EXTENSION_EXTENSION ->EXTENSION (for where there was GDNATIVE_EXTENSION)
gdnlib -> gdextension
gdn_interface -> gde_interface
gdni -> gde_interface
2022-12-12 11:04:57 +01:00
kobewi 7c6b659bd7 Add PropertyInfo overload for GLOBAL_DEF 2022-12-11 21:36:48 +01:00
Yuri Sizov 29cc86fa6c Copy local theme overrides from Control to Window 2022-12-07 20:50:51 +03:00
bruvzg edf13eb5a6
Rename `window_get_real_size` to `window_get_size_with_decorations`, add `window_get_position_with_decorations`. 2022-12-07 11:07:30 +02:00
kobewi 7e2a8afb57 Rework how current Camera2D is determined 2022-12-02 00:05:02 +01:00
Fredia Huya-Kouadio 3ff7dd2aa4 Fix routing of InputEventScreenDrag events to Control nodes 2022-11-30 14:06:41 -08:00
Hendrik Brucker e84f45fc93 Move z_index, z_as_relative and y_sort_enabled from Node2D to CanvasItem 2022-11-29 17:11:22 +01:00
Rémi Verschelde ef090ee6ea
Merge pull request #68874 from TokageItLab/fix-unique-path-keying
Added option to `get_path_to()` to get the shortest path considering unique name
2022-11-28 14:49:34 +01:00
Rémi Verschelde f4faa507d4
Merge pull request #68836 from Calinou/projectsettings-vrs-texture-allow-more-formats
Allow all lossless image formats to be used for VRS texture project setting
2022-11-28 08:38:08 +01:00
Rémi Verschelde 438b2e2d02
Merge pull request #59801 from Sauermann/fix-node2d-viewport-root-order
Fix Viewport root order after Node2D raise
2022-11-28 08:21:10 +01:00
Rémi Verschelde 88e6e1e51c
Revert "`SceneTree` Fix storing removed nodes to be skipped by the group calls" 2022-11-27 13:42:24 +01:00
Rémi Verschelde 986a4279fa
Merge pull request #68447 from Grimmr/clean-tooltips-on-WM-focus-off
Viewport cancels existing tooltip when window looses focus
2022-11-25 14:04:40 +01:00
grimmr aa9b5b917f Viewport cancels existing tooltip when window looses focus
fixes #68197

when NOTIFICATION_WM_WINDOW_FOCUS_OUT is recieved by a viewport it will now call
_gui_cancel_tooltip() to avoid it hanging around after the mouse events stop
coming in
2022-11-25 09:44:04 +00:00
Rémi Verschelde d7e3fce995
Merge pull request #68566 from Mickeon/node-print-orphans-static
Make `Node.print_orphan_nodes()` static
2022-11-24 18:55:30 +01:00
Rémi Verschelde 885fc1f3e7
Merge pull request #68568 from Mickeon/node-parent-busy-error
Update "Parent node is busy" errors to use `Callable.call_deferred()`
2022-11-23 23:11:06 +01:00
Micky c6a355b9e8 Update "Parent node is busy" errors to use `Callable.call_deferred()`
Also fixes outdated method names in the messages.
2022-11-23 17:39:34 +01:00
Markus Sauermann f8df18ef47 Fix CanvasTransform on RenderingServer when Viewport enters Tree
Previously the Viewport didn't initialize its canvas transform in the
RenderingServer.
2022-11-22 23:04:23 +01:00
Fabio Alessandrelli 145f07c037 [Net] Fix HTTPRequest gzip with high compression ratio.
Decompress each body chunk over multiple iterations, this causes more
reallocations, but it ensures decompression will not fail no matter the
compression ratio.
2022-11-20 22:41:14 +01:00
Silc Renew b9d1550590 Add option to get_path_to() to get the shortest path with unique name 2022-11-19 15:06:25 +09:00
Hugo Locurcio 4b13093251
Allow all lossless image formats to be used for VRS texture project setting
WebP can also be lossy, but the class reference now warns about the
requirement to use a lossless format for the VRS texture to work correctly.
2022-11-18 22:21:28 +01:00
Uxeron 721e51ac28 Fixed _get_drag_data getting incorrect position on scaled controls 2022-11-18 19:10:57 +02:00
Rémi Verschelde 6d2a7cb46d
Merge pull request #68709 from MewPurPur/instance-begone-part3
Remove more instances of 'instance' being used as a verb
2022-11-16 14:41:42 +01:00
VolTer 3b4f5f8a04 Remove more instances of 'instance' being used as a verb 2022-11-16 14:01:53 +01:00
Haoyu Qiu 3b08d0e852 Fix crash of queue_free() when main loop is not SceneTree 2022-11-15 08:25:25 +08:00
Rémi Verschelde 03f30855d1
Merge pull request #67831 from kleonc/scene-tree-fix-storing-removed-nodes
`SceneTree` Fix storing removed nodes to be skipped by the group calls
2022-11-14 23:27:41 +01:00
Rémi Verschelde 0dbb632116
Merge pull request #68564 from Mickeon/node-no-remove-group-error
Strip ERR_FAIL from `Node.remove_from_group()`
2022-11-14 23:24:14 +01:00
Markus Sauermann 3b14f0334c Remove redundant Variant-types initializations 2022-11-14 19:35:19 +01:00
Rémi Verschelde d639bb87a7
Merge pull request #68272 from Sauermann/fix-windowfocus-on-resize
Fix Windowfocus on resizing
2022-11-14 16:38:00 +01:00
Markus Sauermann 5cf6ebce63 Drop physics mouseover as soon as the mouse moves over a Control 2022-11-14 12:07:26 +01:00
Micky a1c10dbbd8 Strip ERR_FAIL from `Node.remove_from_group()`
Also simplifies group check removing unnecessary `!data.grouped.has`
2022-11-13 00:01:18 +01:00
Micky 9b42268467 Make `Node.print_orphan_nodes()` static 2022-11-12 17:55:42 +01:00
Rémi Verschelde 5c7af7f391
Merge pull request #68418 from Sauermann/fix-escape-dnd
Allow canceling Drag and Drop with the Escape-Key
2022-11-11 16:49:09 +01:00
Markus Sauermann 226044b944 Allow canceling Drag and Drop with the Escape-Key
This patch implements the functionality to cancel Drag and Drop
by using the escape key or more general, the ui_cancel action.

Since this would be the third location, where the finalization of
Drag and Drop would have to be implemented, that functionality was
put into the private function _perform_drop.

Simplified gui.drag_data.get_type() != Variant::NIL to gui.dragging
because they are equivalent.
2022-11-08 19:10:16 +01:00
ktxyz 7601808455 Update sub_windows order with respect to FLAG_ALWAYS_ON_TOP 2022-11-08 13:20:45 +01:00
Markus Sauermann 7445ab95fc Fix SubViewport with default size being pink
A SubViewport with default-size doesn't display its content, but shows
pink color, until it is resized.
This patch makes sure, that the size gets set during initialization.
2022-11-07 09:23:32 +01:00
Markus Sauermann 65647e9c7d Fix Windowfocus on resizing
When resizing a non-focused window, the previously focused
Window got resized.
This patch grabs focus for the actually resized window, before
starting with the resizing.
2022-11-04 22:24:00 +01:00
Rémi Verschelde d4bf7f4458
Fixup Clang -Wtype-limits warnings introduced by #52350 2022-11-02 22:36:01 +01:00
Markus Sauermann 022d24a9ae Fix Viewport root order after Node2D raise 2022-11-02 21:45:00 +01:00
Rémi Verschelde 30e4e7c083
Merge pull request #67917 from Faless/mp/4.x_auth
[MP] Add peer authentication support to the default MultiplayerAPI.
2022-11-02 18:53:38 +01:00
Rémi Verschelde 604abb434f
Merge pull request #52350 from BimDav/viewport_canvas_cull
Added Viewport canvas cull mask feature
2022-11-02 17:14:24 +01:00
Fabio Alessandrelli 33dda2e68a [MP] Remove connection state signals from MultiplayerPeer.
Now handled directly by the MultiplayerAPI implementation.
2022-11-02 15:17:23 +01:00
Rémi Verschelde ad0349c0e3
Merge pull request #59479 from Sauermann/fix-rootorder-on-layerchange
Update root order on layer change
2022-11-02 14:20:24 +01:00
Fabio Alessandrelli 0a0e99cadc
Merge pull request #67982 from Faless/mp/4.x_disconnect_close
[MP] Add MultiplayerPeer disconnect_peer, close.
2022-11-01 20:35:04 +01:00
BimDav fcb9be66a2 Viewport canvas cull mask feature
Co-authored-by: Valentin Zagura <puthre@gmail.com>
2022-10-31 14:09:49 +01:00
Rémi Verschelde 5947f22be9
Merge pull request #67578 from KoBeWi/GEDITOR
Unify usage of GLOBAL/EDITOR_GET
2022-10-31 13:15:58 +01:00
Rémi Verschelde 71a6aba3d7
Merge pull request #67710 from KoBeWi/a_bit_local_global_transform
Remove error condition from get_global_transform()
2022-10-31 11:59:08 +01:00
Rémi Verschelde be126d42d4
Merge pull request #67588 from KoBeWi/if(!GDVIRTUAL_CALL)don't
Simplify GDVIRTUAL_CALL calls
2022-10-31 11:55:56 +01:00
Rémi Verschelde dcd86f9848
Merge pull request #67046 from Cykyrios/fix-invalid-tooltip-position
Fix invalid tooltip position
2022-10-31 11:05:19 +01:00
Rémi Verschelde 420eb1aa34
Merge pull request #67445 from Zylann/rename_queue_delete
Rename queue_delete => queue_free
2022-10-31 10:51:18 +01:00
Rémi Verschelde 32548f9608
Merge pull request #67467 from timothyqiu/who-ami-i
Fix get_path() error when calling get_node()
2022-10-31 10:33:51 +01:00
Markus Sauermann 35956d9128 Fix event-content and mouse-signals with 3D-capture-on-drag
Fix for 3D-physics processing:
- with enabled input_capture_on_drag now report correct position and
normals in _input_event
- mouse_enter and mouse_exit signals are emitted when the mouse cursor
leaves the visible area of the 3D-object, independently of pressed mouse
button or input_capture_on_drag
- make sure that collision input events are sent in the right order with
respect to mouse_enter and mouse_exit signals
2022-10-29 12:59:46 +02:00
Fabio Alessandrelli 39f3d9d59e [MP] Add MultiplayerPeer disconnect_peer, close.
Update ENet, WebRTC, and WebSocket to support peer disconnection and
unify the close function.
2022-10-28 21:18:01 +02:00