diff options
author | Poommetee Ketson <poommetee@protonmail.com> | 2017-09-17 08:52:26 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-17 08:52:26 +0700 |
commit | 69f0d3b663321c4436e78efea224f8cd8008392b (patch) | |
tree | 15d03441b5574b16eabf91638cbee20b19a228b6 | |
parent | a9229d37c8649e7de4df6f766b1e1967a38cdabb (diff) | |
parent | 202e4c8836ab99e818ce43431a87621bb39181e4 (diff) |
Merge pull request #11269 from toger5/fix_get_stylebox_parent_class
also loop for classes if there is no coustom theme fixes #11250
-rw-r--r-- | scene/gui/control.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 87dfd95724..2d5b54257a 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -809,9 +809,9 @@ Ref<StyleBox> Control::get_stylebox(const StringName &p_name, const StringName & // try with custom themes Control *theme_owner = data.theme_owner; - while (theme_owner) { + StringName class_name = type; - StringName class_name = type; + while (theme_owner) { while (class_name != StringName()) { if (theme_owner->data.theme->has_stylebox(p_name, class_name)) { @@ -829,6 +829,14 @@ Ref<StyleBox> Control::get_stylebox(const StringName &p_name, const StringName & theme_owner = NULL; } + class_name = type; + + while (class_name != StringName()) { + if (Theme::get_default()->has_stylebox(p_name, class_name)) + return Theme::get_default()->get_stylebox(p_name, class_name); + + class_name = ClassDB::get_parent_class_nocheck(class_name); + } return Theme::get_default()->get_stylebox(p_name, type); } Ref<Font> Control::get_font(const StringName &p_name, const StringName &p_type) const { |