Merge pull request #70215 from quentinguidee/refactor/get-owner-node-theme
ThemeOwner: Extract get_owner_node_theme
This commit is contained in:
commit
8c70396267
2 changed files with 20 additions and 50 deletions
|
@ -205,16 +205,7 @@ Variant ThemeOwner::get_theme_item_in_types(Theme::DataType p_data_type, const S
|
||||||
while (owner_node) {
|
while (owner_node) {
|
||||||
// For each theme resource check the theme types provided and see if p_name exists with any of them.
|
// For each theme resource check the theme types provided and see if p_name exists with any of them.
|
||||||
for (const StringName &E : p_theme_types) {
|
for (const StringName &E : p_theme_types) {
|
||||||
Ref<Theme> owner_theme;
|
Ref<Theme> owner_theme = _get_owner_node_theme(owner_node);
|
||||||
|
|
||||||
Control *owner_c = Object::cast_to<Control>(owner_node);
|
|
||||||
if (owner_c) {
|
|
||||||
owner_theme = owner_c->get_theme();
|
|
||||||
}
|
|
||||||
Window *owner_w = Object::cast_to<Window>(owner_node);
|
|
||||||
if (owner_w) {
|
|
||||||
owner_theme = owner_w->get_theme();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (owner_theme.is_valid() && owner_theme->has_theme_item(p_data_type, p_name, E)) {
|
if (owner_theme.is_valid() && owner_theme->has_theme_item(p_data_type, p_name, E)) {
|
||||||
return owner_theme->get_theme_item(p_data_type, p_name, E);
|
return owner_theme->get_theme_item(p_data_type, p_name, E);
|
||||||
|
@ -254,16 +245,7 @@ bool ThemeOwner::has_theme_item_in_types(Theme::DataType p_data_type, const Stri
|
||||||
while (owner_node) {
|
while (owner_node) {
|
||||||
// For each theme resource check the theme types provided and see if p_name exists with any of them.
|
// For each theme resource check the theme types provided and see if p_name exists with any of them.
|
||||||
for (const StringName &E : p_theme_types) {
|
for (const StringName &E : p_theme_types) {
|
||||||
Ref<Theme> owner_theme;
|
Ref<Theme> owner_theme = _get_owner_node_theme(owner_node);
|
||||||
|
|
||||||
Control *owner_c = Object::cast_to<Control>(owner_node);
|
|
||||||
if (owner_c) {
|
|
||||||
owner_theme = owner_c->get_theme();
|
|
||||||
}
|
|
||||||
Window *owner_w = Object::cast_to<Window>(owner_node);
|
|
||||||
if (owner_w) {
|
|
||||||
owner_theme = owner_w->get_theme();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (owner_theme.is_valid() && owner_theme->has_theme_item(p_data_type, p_name, E)) {
|
if (owner_theme.is_valid() && owner_theme->has_theme_item(p_data_type, p_name, E)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -299,16 +281,7 @@ float ThemeOwner::get_theme_default_base_scale() {
|
||||||
Node *owner_node = get_owner_node();
|
Node *owner_node = get_owner_node();
|
||||||
|
|
||||||
while (owner_node) {
|
while (owner_node) {
|
||||||
Ref<Theme> owner_theme;
|
Ref<Theme> owner_theme = _get_owner_node_theme(owner_node);
|
||||||
|
|
||||||
Control *owner_c = Object::cast_to<Control>(owner_node);
|
|
||||||
if (owner_c) {
|
|
||||||
owner_theme = owner_c->get_theme();
|
|
||||||
}
|
|
||||||
Window *owner_w = Object::cast_to<Window>(owner_node);
|
|
||||||
if (owner_w) {
|
|
||||||
owner_theme = owner_w->get_theme();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (owner_theme.is_valid() && owner_theme->has_default_base_scale()) {
|
if (owner_theme.is_valid() && owner_theme->has_default_base_scale()) {
|
||||||
return owner_theme->get_default_base_scale();
|
return owner_theme->get_default_base_scale();
|
||||||
|
@ -338,16 +311,7 @@ Ref<Font> ThemeOwner::get_theme_default_font() {
|
||||||
Node *owner_node = get_owner_node();
|
Node *owner_node = get_owner_node();
|
||||||
|
|
||||||
while (owner_node) {
|
while (owner_node) {
|
||||||
Ref<Theme> owner_theme;
|
Ref<Theme> owner_theme = _get_owner_node_theme(owner_node);
|
||||||
|
|
||||||
Control *owner_c = Object::cast_to<Control>(owner_node);
|
|
||||||
if (owner_c) {
|
|
||||||
owner_theme = owner_c->get_theme();
|
|
||||||
}
|
|
||||||
Window *owner_w = Object::cast_to<Window>(owner_node);
|
|
||||||
if (owner_w) {
|
|
||||||
owner_theme = owner_w->get_theme();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (owner_theme.is_valid() && owner_theme->has_default_font()) {
|
if (owner_theme.is_valid() && owner_theme->has_default_font()) {
|
||||||
return owner_theme->get_default_font();
|
return owner_theme->get_default_font();
|
||||||
|
@ -377,16 +341,7 @@ int ThemeOwner::get_theme_default_font_size() {
|
||||||
Node *owner_node = get_owner_node();
|
Node *owner_node = get_owner_node();
|
||||||
|
|
||||||
while (owner_node) {
|
while (owner_node) {
|
||||||
Ref<Theme> owner_theme;
|
Ref<Theme> owner_theme = _get_owner_node_theme(owner_node);
|
||||||
|
|
||||||
Control *owner_c = Object::cast_to<Control>(owner_node);
|
|
||||||
if (owner_c) {
|
|
||||||
owner_theme = owner_c->get_theme();
|
|
||||||
}
|
|
||||||
Window *owner_w = Object::cast_to<Window>(owner_node);
|
|
||||||
if (owner_w) {
|
|
||||||
owner_theme = owner_w->get_theme();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (owner_theme.is_valid() && owner_theme->has_default_font_size()) {
|
if (owner_theme.is_valid() && owner_theme->has_default_font_size()) {
|
||||||
return owner_theme->get_default_font_size();
|
return owner_theme->get_default_font_size();
|
||||||
|
@ -408,3 +363,17 @@ int ThemeOwner::get_theme_default_font_size() {
|
||||||
}
|
}
|
||||||
return ThemeDB::get_singleton()->get_fallback_font_size();
|
return ThemeDB::get_singleton()->get_fallback_font_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<Theme> ThemeOwner::_get_owner_node_theme(Node *p_owner_node) const {
|
||||||
|
const Control *owner_c = Object::cast_to<Control>(p_owner_node);
|
||||||
|
if (owner_c) {
|
||||||
|
return owner_c->get_theme();
|
||||||
|
}
|
||||||
|
|
||||||
|
const Window *owner_w = Object::cast_to<Window>(p_owner_node);
|
||||||
|
if (owner_w) {
|
||||||
|
return owner_w->get_theme();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ref<Theme>();
|
||||||
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ class ThemeOwner : public Object {
|
||||||
Window *owner_window = nullptr;
|
Window *owner_window = nullptr;
|
||||||
|
|
||||||
Node *_get_next_owner_node(Node *p_from_node) const;
|
Node *_get_next_owner_node(Node *p_from_node) const;
|
||||||
|
Ref<Theme> _get_owner_node_theme(Node *p_owner_node) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Theme owner node.
|
// Theme owner node.
|
||||||
|
|
Loading…
Reference in a new issue