summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
Diffstat (limited to 'scene')
-rw-r--r--scene/2d/navigation_region_2d.cpp3
-rw-r--r--scene/resources/theme.cpp44
2 files changed, 41 insertions, 6 deletions
diff --git a/scene/2d/navigation_region_2d.cpp b/scene/2d/navigation_region_2d.cpp
index f46453283c..260faf1d68 100644
--- a/scene/2d/navigation_region_2d.cpp
+++ b/scene/2d/navigation_region_2d.cpp
@@ -509,6 +509,9 @@ void NavigationRegion2D::_navpoly_changed() {
if (is_inside_tree() && (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_navigation_hint())) {
update();
}
+ if (navpoly.is_valid()) {
+ NavigationServer2D::get_singleton()->region_set_navpoly(region, navpoly);
+ }
}
void NavigationRegion2D::_map_changed(RID p_map) {
if (enabled && get_world_2d()->get_navigation_map() == p_map) {
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 1e57933000..e14f5f224e 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -1272,12 +1272,44 @@ void Theme::remove_type(const StringName &p_theme_type) {
void Theme::get_type_list(List<StringName> *p_list) const {
ERR_FAIL_NULL(p_list);
- get_icon_type_list(p_list);
- get_stylebox_type_list(p_list);
- get_font_type_list(p_list);
- get_font_size_type_list(p_list);
- get_color_type_list(p_list);
- get_constant_type_list(p_list);
+ // This Set guarantees uniqueness.
+ // Because each map can have the same type defined, but for this method
+ // we only want one occurrence of each type.
+ RBSet<StringName> types;
+
+ // Icons.
+ for (const KeyValue<StringName, HashMap<StringName, Ref<Texture2D>>> &E : icon_map) {
+ types.insert(E.key);
+ }
+
+ // Styles.
+ for (const KeyValue<StringName, HashMap<StringName, Ref<StyleBox>>> &E : style_map) {
+ types.insert(E.key);
+ }
+
+ // Fonts.
+ for (const KeyValue<StringName, HashMap<StringName, Ref<Font>>> &E : font_map) {
+ types.insert(E.key);
+ }
+
+ // Font sizes.
+ for (const KeyValue<StringName, HashMap<StringName, int>> &E : font_size_map) {
+ types.insert(E.key);
+ }
+
+ // Colors.
+ for (const KeyValue<StringName, HashMap<StringName, Color>> &E : color_map) {
+ types.insert(E.key);
+ }
+
+ // Constants.
+ for (const KeyValue<StringName, HashMap<StringName, int>> &E : constant_map) {
+ types.insert(E.key);
+ }
+
+ for (RBSet<StringName>::Element *E = types.front(); E; E = E->next()) {
+ p_list->push_back(E->get());
+ }
}
void Theme::get_type_dependencies(const StringName &p_base_type, const StringName &p_type_variation, List<StringName> *p_list) {