Commit Graph

67 Commits

Author SHA1 Message Date
Anni Ryynänen 0fefd6cc80
Fix GridContainer minimum size when there's a hidden parent
When calculating minimum size, GridContainer only looks at children that are
returned from `as_sortable_control()`. That defaults to only showing children
visible in the tree, so if the grid has a hidden parent the minimum size
becomes (0, 0).

After this change only the child itself needs to be visible, making
`GridContainer::get_minimum_size()` behave the same way as other controls.

Fixes #91722.
2024-06-20 13:49:09 +03:00
kobewi 5c28814b39 Add as_sortable_control() to unify Container checks 2024-05-08 11:45:52 +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
Yuri Sizov 2924bfd4d3 Register theme properties with ThemeDB 2023-09-11 13:45:23 +02:00
Juan Linietsky 47592927b3 Use BitField<> hint for ArrayFormat
This was missing in the conversion of bitflags to BitField<>.
2023-01-08 18:47:48 +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
Yuri Sizov 3b1aa240dc Add a lifecycle method for manual theme item caching to Control 2022-09-01 16:35:36 +03: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
besh81 153086152e Fixed bug in grid_container with hidden children
Fix a bug that occour when there are hidden children in grid_container.
The visualization isn't correct due to a wrong calculation of max_col and max_row that mistakenly includes hidden children.
2022-07-14 08:42:39 +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
Rémi Verschelde 9efb134469
Merge pull request #59799 from Sauermann/fix-gridcontainer-remaining-pixel 2022-05-16 15:04:48 +02: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
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
Michael Alexsander 506d8ba526 Fix `GridContainer` not ignoring toplevel children 2022-04-13 18:09:51 -03:00
Markus Sauermann 6b3207644b Distribute remaining pixel to expanding childs of GridContainer 2022-04-01 19:04:07 +02:00
Rémi Verschelde 0f5455230c
Use `switch` consistently in `_notification` (`scene` folder) 2022-02-15 18:44:55 +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
kobewi ea7cc1dea9 Rename minimum_size_changed() method 2021-12-06 14:02:34 +01:00
Lightning_A c63b18507d Use range iterators for `Map` 2021-09-30 15:09:12 -06:00
reduz 6631f66c2a Optimize StringName usage
* Added a new macro SNAME() that constructs and caches a local stringname.
* Subsequent usages use the cached version.
* Since these use a global static variable, a second refcounter of static usages need to be kept for cleanup time.
* Replaced all theme usages by this new macro.
* Replace all signal emission usages by this new macro.
* Replace all call_deferred usages by this new macro.

This is part of ongoing work to optimize GUI and the editor.
2021-07-18 21:20:02 -03:00
Rémi Verschelde c1c76850cb
Style: Cleanup uses of double spaces between words
Or after punctuation. Tried to leave third-party stuff alone, unless it has
been heavily modified for Godot.
2021-06-07 11:03:08 +02:00
Rafał Mikrut 7961a1dea3 Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
Rémi Verschelde b5334d14f7
Update copyright statements to 2021
Happy new year to the wonderful Godot community!

2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.

We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)

Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
bruvzg 99666de00f
[Complex Text Layouts] Refactor Font class, default themes and controls to use Text Server interface.
Implement interface mirroring.
Add TextLine and TextParagraph classes.
Handle UTF-16 input on macOS and Windows.
2020-11-26 14:25:48 +02:00
Rémi Verschelde 0ee0fa42e6 Style: Enforce braces around if blocks and loops
Using clang-tidy's `readability-braces-around-statements`.
https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2020-05-14 21:57:34 +02:00
Rémi Verschelde 0be6d925dc Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
Which means that reduz' beloved style which we all became used to
will now be changed automatically to remove the first empty line.

This makes us lean closer to 1TBS (the one true brace style) instead
of hybridating it with some Allman-inspired spacing.

There's still the case of braces around single-statement blocks that
needs to be addressed (but clang-format can't help with that, but
clang-tidy may if we agree about it).

Part of #33027.
2020-05-14 16:54:55 +02:00
Juan Linietsky 441f1a5fe9 Popups are now windows also (broken!) 2020-03-26 15:49:42 +01:00
Rémi Verschelde e2bebfbd4c Use MOUSE_FILTER_PASS for all containers (but PanelContainer)
Containers are meant to forward mouse input to their the Controls
they contain.

PanelContainer has a visible Panel stylebox, so it still defaults
to STOP.

Fixes #34933.
2020-01-13 14:49:01 +01:00
Rémi Verschelde a7f49ac9a1 Update copyright statements to 2020
Happy new year to the wonderful Godot community!

We're starting a new decade with a well-established, non-profit, free
and open source game engine, and tons of further improvements in the
pipeline from hundreds of contributors.

Godot will keep getting better, and we're looking forward to all the
games that the community will keep developing and releasing with it.
2020-01-01 11:16:22 +01:00
Rémi Verschelde f46bf8e721
Merge pull request #32411 from YeldhamDev/fix_grid_overflow
Fix GridContainer's children overflowing it when not all slots of a row are occupied
2019-10-08 17:05:32 +02:00
ternvein 848eeafe29 FIX: GridContainer children visibility check for min size evaluation 2019-10-01 16:13:06 +04:00
Michael Alexsander Silva Dias 24ed6b58e1 Make empty columns automatically expand in GridContainer 2019-09-28 09:49:58 -03:00
Michael Alexsander Silva Dias 07f3a129c6 Fix GridContainer's children overflowing it when not all slots of a row are occupied 2019-09-28 02:57:11 -03:00
groud a1f955a1d3 Updates containers minimum size when some constants are modified 2019-01-24 22:31:33 +01:00
Rémi Verschelde b16c309f82 Update copyright statements to 2019
Happy new year to the wonderful Godot community!
2019-01-01 12:58:10 +01:00
Rémi Verschelde cb677e57c6
Revert "Created a new function named get_element in GridContainer. This funct…" 2018-10-07 10:32:34 +02:00
Rémi Verschelde b6a7c5693f
Merge pull request #16977 from SASUPERNOVA/master
Created a new function named get_element in GridContainer. This funct…
2018-05-01 16:32:30 +02:00
groud c3f982156d Fix GridContainer's children visibility breaking the layout 2018-04-23 20:00:06 +02:00
SASUPERNOVA d8d329883e Updated fork to match current version of Godot. 2018-04-15 14:53:28 +03:00
Gilles Roudiere 896e5a64d3 Fixes wrong calculation of gridcontainer's children size 2018-03-18 22:33:17 +01:00
Rémi Verschelde b1c9a7c757
Merge pull request #17410 from groud/fix_grid_container
Fixes infinite loop in GridContainer
2018-03-13 10:34:31 +01:00
Gary Oberbrunner 561e57df13 Fix infinite loop in GridContainer layout
I had a grid container and tried to set rect.min_height larger in the
editor; that caused an infinite loop in GridContainer::_notification
at line 118. The reason is max_index was being set to the *height* of
the row, not the *index* of the row. So later when it tried to erase
that row and try again, there was nothing to erase.
I applied the same fix to the width code.
2018-03-10 14:38:35 -05:00
Gilles Roudiere 44cb8eb3a2 Fixes infinite loop in GridContainer 2018-03-10 14:01:20 +01:00
Leon Krause 38623e07ac Prevent division by zero in GridContainer 2018-03-07 17:36:28 +01:00
Gilles Roudiere d1f32708b7 Fixes a Gridcontainer wrong children fitting with expanded+non-zero minisize 2018-01-19 00:56:30 +01:00
Rémi Verschelde e4213e66b2 Add missing copyright headers and fix formatting
Using `misc/scripts/fix_headers.py` on all Godot files.
Some missing header guards were added, and the header inclusion order
was fixed in the Bullet module.
2018-01-05 01:22:23 +01:00
Rémi Verschelde b50a9114b1 Update copyright statements to 2018
Happy new year to the wonderful Godot community!
2018-01-01 14:40:47 +01:00
Rémi Verschelde bd282ff43f Use HTTPS URL for Godot's website in the headers 2017-08-27 14:16:55 +02:00
Hein-Pieter van Braam cacced7e50 Convert Object::cast_to() to the static version
Currently we rely on some undefined behavior when Object->cast_to() gets
called with a Null pointer. This used to work fine with GCC < 6 but
newer versions of GCC remove all codepaths in which the this pointer is
Null. However, the non-static cast_to() was supposed to be null safe.

This patch makes cast_to() Null safe and removes the now redundant Null
checks where they existed.

It is explained in this article: https://www.viva64.com/en/b/0226/
2017-08-24 23:08:24 +02:00