Commit Graph

223 Commits

Author SHA1 Message Date
Yuri Sizov 5d14d08702
Merge pull request #59226 from Rindbee/better-setters-in-gui-controls
Improve the setters in gui, return directly if the value does not change.
2022-08-24 17:03:54 +03:00
kobewi 1abdffe7a0 Replace Array return types with TypedArray 2 2022-08-23 23:21:32 +02:00
风青山 e561c68256 Add some codes, returnes directly if the value is not changed.
Avoid executing the following value-changed logics if the value does not really change.
2022-08-23 23:25:22 +08:00
daylilyzeleen 64e33d9ed1 fixed GraphEdit signal argument type 2022-08-12 20:18:36 +08:00
tefusion f1c19e058c Fix GraphEdit::arange_nodes causing a freeze
When a Graph contains cycles, e.g. 1->2->3->1 _layering would end
up in an infinite loop since IS_SUBSET would never be true.
By keeping check of the size of z, which contains the already layered
nodes, one can detect a freeze (since it should change after
current_layer increases. If it doesn't "u" didn't change and q and u
will  never be equal resulting  in a freeze/infinite while loop).
If a freeze happens warn the user and put all the nodes part of the
cycle (leftover in p) to the  first layer which will end up in them
being listed top to bottom.
2022-08-04 17:13:56 +02:00
Johannes Witt 2fb69afde6
Add GraphEdit.is_node_hover_valid(...) method
This is a virtual method that can be used to add additional error
condition checks while the connection is still being dragged. If true is
returned, the connection is valid. If false is returned, the connection
is invalid and thus not possible (ie. it will not snap). The virtual
method is exposed with an underscore to scripts.
2022-07-31 15:35:26 +02:00
Juan Linietsky d4433ae6d3 Remove Signal connect binds
Remove the optional argument p_binds from `Object::connect` since it was deprecated by Callable.bind().
Changed all uses of it to Callable.bind()
2022-07-29 16:26:13 +02:00
FireForge 97dfbea6ad Rename Control PRESET_WIDE to PRESET_FULL_RECT 2022-07-18 20:08:11 -05:00
FireForge 4678736a39 Add suffixes to all nodes and resources 2022-06-11 09:41:05 -05:00
Hendrik Brucker c6a39cd952 Fix enclosed nodes calculation of GraphEdit comment nodes 2022-06-02 13:14:46 +02:00
Hendrik Brucker 70c234f3e3 Improve Graphedit connection lines 2022-05-30 17:33:01 +02:00
Hendrik Brucker 771cb1261a Improve and fix the GraphNode port hotzones
Co-authored-by: Ansraer <jacky2611@gmail.com>
2022-05-30 15:48:58 +02:00
reduz 45af29da80 Add a new HashSet template
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
Aaron Record 900c676b02 Use range iterators for RBSet in most cases 2022-05-19 12:09:16 +02:00
Yuri Rubinsky c84d050980 Add node list param to `GraphEdit::delete_nodes_request` signal 2022-05-17 13:28:21 +03:00
reduz 746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
reduz 8b7c7f5a75 Add a new HashMap implementation
Adds a new, cleaned up, HashMap implementation.

* Uses Robin Hood Hashing (https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing).
* Keeps elements in a double linked list for simpler, ordered, iteration.
* Allows keeping iterators for later use in removal (Unlike Map<>, it does not do much
  for performance vs keeping the key, but helps replace old code).
* Uses a more modern C++ iterator API, deprecates the old one.
* Supports custom allocator (in case there is a wish to use a paged one).

This class aims to unify all the associative template usage and replace it by this one:
* Map<> (whereas key order does not matter, which is 99% of cases)
* HashMap<>
* OrderedHashMap<>
* OAHashMap<>
2022-05-12 11:21:29 +02:00
FireForge 3073b85de9 Rename theme properties to include underscores
- check_vadjust -> check_v_adjust
- close_h_ofs -> close_h_offset
- close_v_ofs -> close_v_offset
- commentfocus -> comment_focus
- hseparation -> h_separation
- ofs -> offset
- selectedframe -> selected_frame
- state_machine_selectedframe -> state_machine_selected_frame
- table_hseparation -> table_h_separation
- table_vseparation -> table_v_separation
- vseparation -> v_separation
2022-04-23 11:16:18 -05:00
Eric McGuirk b1441bbcfc Fix toggling GraphEdit's minimap with `minimap_enabled`
Fixes #53831.
2022-04-11 17:52:04 +02:00
kobewi b29aff8dac Fix GraphEdit's valid connections being reversed 2022-04-11 00:34:59 +02:00
Fazil Babu a3598b487a popup_request signal emits mouse click position 2022-03-12 14:00:04 +05:30
Rémi Verschelde 0f5455230c
Use `switch` consistently in `_notification` (`scene` folder) 2022-02-15 18:44:55 +01:00
Nathan Franke 8a0a3accee
simplify formatting scripts, add a clang-tidy script, and run clang-tidy 2022-01-29 04:41:03 -06:00
kobewi 98692d68c3 Minor tweaks and fixes to panning 2022-01-23 13:49:53 +01:00
kobewi 74bfe88267 Add ViewPanner to 2D editor 2022-01-21 18:35:06 +01:00
kobewi ba7ed05792 Unify panning in sub-editors and make it configurable 2022-01-11 13:57:19 +01:00
Rémi Verschelde c09c4e0154
Merge pull request #56575 from HaSa1002/drag-signal-began
Rename GraphEdit `connection_drag_begun` to `connection_drag_started`
2022-01-07 20:41:39 +01:00
Johannes Witt 4c5ceb1a97
Rename GraphEdit connection_drag_begun to connection_drag_started 2022-01-07 18:25:03 +01:00
Rémi Verschelde 6a27d7361a
Merge pull request #56321 from pycbouh/core-use-gdvirtual-everywhere 2022-01-07 16:14:28 +01:00
Johannes Witt 0505b08a56
Add `GraphEdit` drag notifications
This commit adds two signals:
 * connection_drag_begun, which is emitted when a connection is started
   to be created by the user and
 * `connection_drag_ended`, which is emitted when no longer a connection
   is created.

Additionally `force_connection_drag_end()` adds the possibility to end
the connection dragging. If called from user code, no other connection
request signals are invoked. This is useful to add `GraphNode`s via
shortcuts while the user is dragging a connection to directly connect
the newly added node.
2022-01-06 17:51:40 +01:00
Rémi Verschelde 8501233401
Merge pull request #56347 from NNesh/fix/graph_editor_out_of_range_alignment
Fixed an invalidation of sets and out of range for an alignment
2022-01-04 00:37:43 +01:00
Rémi Verschelde fe52458154
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
luz paz a124f1effe Fix various typos
Found via ` codespell -q 3 -S ./thirdparty,*.po,./DONORS.md -L ackward,ang,ans,ba,beng,cas,childs,childrens,dof,doubleclick,expct,fave,findn,gird,hist,inout,leapyear,lod,nd,numer,ois,ony,paket,seeked,sinc,switchs,te,uint,varn`
Update editor/import/resource_importer_layered_texture.cpp

Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update doc/classes/TileSetScenesCollectionSource.xml

Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/gui/graph_edit.cpp

Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/resources/animation.cpp

Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/resources/animation.cpp

Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/resources/animation.cpp

Co-authored-by: Raul Santos <raulsntos@gmail.com>
Update scene/gui/rich_text_label.cpp

Co-authored-by: Raul Santos <raulsntos@gmail.com>
Revert previously committed change
2022-01-02 01:03:58 -05:00
NNesh 0af3d6b990 Fixed a invalidation of sets and out of range in the _horizontal_alignment function
Fixed start index (to the second half element)

Fixed out of range when size is equal 1
2022-01-02 00:21:36 +05:00
Yuri Sizov 7d37f76241 Use GDVIRTUAL* macros when binding virtual methods in exposed classes 2021-12-29 20:27:44 +03:00
Rémi Verschelde deb30a4108
Merge pull request #52015 from mechPenSketch/expose_hotzones2
Expose connection hot zones in `GraphNode`
2021-12-15 20:23:07 +01:00
mechPenSketch 0449b30bbc Expose connection hot zones in GraphNode 2021-12-12 15:20:40 +08:00
Nathan Franke 41a20171eb
align to horizontal_alignment, valign to vertical_alignment, related 2021-12-09 01:38:46 -06:00
jmb462 81efebb3a1
Fix bad popups offset in editor with single window off
Co-authored-by: Gil Arasa Verge <gilarasaverge@gmail.com>
Co-authored-by: Tomasz Chabora <kobewi4e@gmail.com>
2021-12-06 14:29:48 +01:00
Umang Kalra 840225bdb1 Making nodes enclosed within comment move with the comment node 2021-11-15 10:59:07 +05:30
Aaron Franke 3c0fdcc8ac
Use "enum class" for input enums 2021-11-12 15:37:54 -06:00
Yuri Sizov bdbb7b3999 Remove EDSCALE dependency from /scene/gui 2021-10-04 15:25:08 +03:00
Anilforextra fc9767abb1 Use functions defined in the their classes. 2021-09-29 09:36:34 +05:45
Anilforextra cc51b045da Construct values only when necessary. 2021-09-23 22:26:07 +05:45
Rémi Verschelde 88b347dc27
Merge pull request #51920 from jmb462/missing-sname-macro-optimization-in-some-functions 2021-09-23 13:14:20 +02:00
kobewi 645dc40cba Fix error when moving graph node 2021-09-14 16:09:33 +02:00
kobewi a913ae8d56 Add support for internal nodes 2021-08-28 02:07:23 +02:00
reduz 5cecdfa8af Entirely removes BIND_VMETHOD in favor of GDVIRTUAL
* `_gui_input`, `_input`, `_unhandled_input` and `_unhandled_key_input` are now regular C++ virutal functions.
* Everything else converted to GDVIRTUAL
* BIND_VMETHOD is gone, always use the new syntax from now on.

Creating `_gui_input` method and using the binder to register events will no longer work, simply override the virtual function now.
2021-08-23 08:10:13 -03:00
Jummit 856d0b52e5 Fix GraphEdit connection colors 2021-08-22 21:09:16 +02:00
Jummit 7c1181116f Make GraphEdit connections consistent on zoom 2021-08-22 11:08:37 +02:00