Skip to content

Commit 94a7dfe

Browse files
danielgsilvadagarsar
authored andcommitted
Add additional methods for has_theme_item to check for font and font size
1 parent aa65940 commit 94a7dfe

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

scene/resources/theme.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,10 @@ bool Theme::has_font(const StringName &p_name, const StringName &p_theme_type) c
513513
return ((font_map.has(p_theme_type) && font_map[p_theme_type].has(p_name) && font_map[p_theme_type][p_name].is_valid()) || has_default_font());
514514
}
515515

516+
bool Theme::has_font_no_default(const StringName &p_name, const StringName &p_theme_type) const {
517+
return (font_map.has(p_theme_type) && font_map[p_theme_type].has(p_name) && font_map[p_theme_type][p_name].is_valid());
518+
}
519+
516520
bool Theme::has_font_nocheck(const StringName &p_name, const StringName &p_theme_type) const {
517521
return (font_map.has(p_theme_type) && font_map[p_theme_type].has(p_name));
518522
}
@@ -616,6 +620,10 @@ bool Theme::has_font_size(const StringName &p_name, const StringName &p_theme_ty
616620
return ((font_size_map.has(p_theme_type) && font_size_map[p_theme_type].has(p_name) && (font_size_map[p_theme_type][p_name] > 0)) || has_default_font_size());
617621
}
618622

623+
bool Theme::has_font_size_no_default(const StringName &p_name, const StringName &p_theme_type) const {
624+
return (font_size_map.has(p_theme_type) && font_size_map[p_theme_type].has(p_name) && (font_size_map[p_theme_type][p_name] > 0));
625+
}
626+
619627
bool Theme::has_font_size_nocheck(const StringName &p_name, const StringName &p_theme_type) const {
620628
return (font_size_map.has(p_theme_type) && font_size_map[p_theme_type].has(p_name));
621629
}
@@ -923,9 +931,17 @@ bool Theme::has_theme_item(DataType p_data_type, const StringName &p_name, const
923931
case DATA_TYPE_CONSTANT:
924932
return has_constant(p_name, p_theme_type);
925933
case DATA_TYPE_FONT:
926-
return has_font(p_name, p_theme_type);
934+
if (!variation_map.has(p_theme_type)) {
935+
return has_font(p_name, p_theme_type);
936+
} else {
937+
return has_font_no_default(p_name, p_theme_type);
938+
}
927939
case DATA_TYPE_FONT_SIZE:
928-
return has_font_size(p_name, p_theme_type);
940+
if (!variation_map.has(p_theme_type)) {
941+
return has_font_size(p_name, p_theme_type);
942+
} else {
943+
return has_font_size_no_default(p_name, p_theme_type);
944+
}
929945
case DATA_TYPE_ICON:
930946
return has_icon(p_name, p_theme_type);
931947
case DATA_TYPE_STYLEBOX:

scene/resources/theme.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ class Theme : public Resource {
155155
void set_font(const StringName &p_name, const StringName &p_theme_type, const Ref<Font> &p_font);
156156
virtual Ref<Font> get_font(const StringName &p_name, const StringName &p_theme_type) const;
157157
bool has_font(const StringName &p_name, const StringName &p_theme_type) const;
158+
bool has_font_no_default(const StringName &p_name, const StringName &p_theme_type) const;
158159
bool has_font_nocheck(const StringName &p_name, const StringName &p_theme_type) const;
159160
void rename_font(const StringName &p_old_name, const StringName &p_name, const StringName &p_theme_type);
160161
void clear_font(const StringName &p_name, const StringName &p_theme_type);
@@ -166,6 +167,7 @@ class Theme : public Resource {
166167
void set_font_size(const StringName &p_name, const StringName &p_theme_type, int p_font_size);
167168
virtual int get_font_size(const StringName &p_name, const StringName &p_theme_type) const;
168169
bool has_font_size(const StringName &p_name, const StringName &p_theme_type) const;
170+
bool has_font_size_no_default(const StringName &p_name, const StringName &p_theme_type) const;
169171
bool has_font_size_nocheck(const StringName &p_name, const StringName &p_theme_type) const;
170172
void rename_font_size(const StringName &p_old_name, const StringName &p_name, const StringName &p_theme_type);
171173
void clear_font_size(const StringName &p_name, const StringName &p_theme_type);

0 commit comments

Comments
 (0)