Fix some Animation panel icons not updating after theme change
(cherry picked from commit 83828c7d1b
)
This commit is contained in:
parent
c2297215e3
commit
3b04f59354
4 changed files with 56 additions and 31 deletions
|
@ -1370,7 +1370,7 @@ int AnimationTimelineEdit::get_name_limit() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimationTimelineEdit::_notification(int p_what) {
|
void AnimationTimelineEdit::_notification(int p_what) {
|
||||||
if (p_what == NOTIFICATION_ENTER_TREE) {
|
if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED) {
|
||||||
add_track->set_icon(get_icon("Add", "EditorIcons"));
|
add_track->set_icon(get_icon("Add", "EditorIcons"));
|
||||||
loop->set_icon(get_icon("Loop", "EditorIcons"));
|
loop->set_icon(get_icon("Loop", "EditorIcons"));
|
||||||
time_icon->set_texture(get_icon("Time", "EditorIcons"));
|
time_icon->set_texture(get_icon("Time", "EditorIcons"));
|
||||||
|
@ -1841,6 +1841,16 @@ AnimationTimelineEdit::AnimationTimelineEdit() {
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
|
|
||||||
void AnimationTrackEdit::_notification(int p_what) {
|
void AnimationTrackEdit::_notification(int p_what) {
|
||||||
|
if (p_what == NOTIFICATION_THEME_CHANGED) {
|
||||||
|
if (animation.is_null()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ERR_FAIL_INDEX(track, animation->get_track_count());
|
||||||
|
|
||||||
|
type_icon = _get_key_type_icon();
|
||||||
|
selected_icon = get_icon("KeySelected", "EditorIcons");
|
||||||
|
}
|
||||||
|
|
||||||
if (p_what == NOTIFICATION_DRAW) {
|
if (p_what == NOTIFICATION_DRAW) {
|
||||||
if (animation.is_null()) {
|
if (animation.is_null()) {
|
||||||
return;
|
return;
|
||||||
|
@ -1858,14 +1868,6 @@ void AnimationTrackEdit::_notification(int p_what) {
|
||||||
|
|
||||||
Ref<Font> font = get_font("font", "Label");
|
Ref<Font> font = get_font("font", "Label");
|
||||||
Color color = get_color("font_color", "Label");
|
Color color = get_color("font_color", "Label");
|
||||||
Ref<Texture> type_icons[6] = {
|
|
||||||
get_icon("KeyValue", "EditorIcons"),
|
|
||||||
get_icon("KeyXform", "EditorIcons"),
|
|
||||||
get_icon("KeyCall", "EditorIcons"),
|
|
||||||
get_icon("KeyBezier", "EditorIcons"),
|
|
||||||
get_icon("KeyAudio", "EditorIcons"),
|
|
||||||
get_icon("KeyAnimation", "EditorIcons")
|
|
||||||
};
|
|
||||||
int hsep = get_constant("hseparation", "ItemList");
|
int hsep = get_constant("hseparation", "ItemList");
|
||||||
Color linecolor = color;
|
Color linecolor = color;
|
||||||
linecolor.a = 0.2;
|
linecolor.a = 0.2;
|
||||||
|
@ -1881,7 +1883,7 @@ void AnimationTrackEdit::_notification(int p_what) {
|
||||||
draw_texture(check, check_rect.position);
|
draw_texture(check, check_rect.position);
|
||||||
ofs += check->get_width() + hsep;
|
ofs += check->get_width() + hsep;
|
||||||
|
|
||||||
Ref<Texture> type_icon = type_icons[animation->track_get_type(track)];
|
Ref<Texture> type_icon = _get_key_type_icon();
|
||||||
draw_texture(type_icon, Point2(ofs, int(get_size().height - type_icon->get_height()) / 2));
|
draw_texture(type_icon, Point2(ofs, int(get_size().height - type_icon->get_height()) / 2));
|
||||||
ofs += type_icon->get_width() + hsep;
|
ofs += type_icon->get_width() + hsep;
|
||||||
|
|
||||||
|
@ -2321,19 +2323,10 @@ void AnimationTrackEdit::set_animation_and_track(const Ref<Animation> &p_animati
|
||||||
track = p_track;
|
track = p_track;
|
||||||
update();
|
update();
|
||||||
|
|
||||||
Ref<Texture> type_icons[6] = {
|
|
||||||
get_icon("KeyValue", "EditorIcons"),
|
|
||||||
get_icon("KeyXform", "EditorIcons"),
|
|
||||||
get_icon("KeyCall", "EditorIcons"),
|
|
||||||
get_icon("KeyBezier", "EditorIcons"),
|
|
||||||
get_icon("KeyAudio", "EditorIcons"),
|
|
||||||
get_icon("KeyAnimation", "EditorIcons")
|
|
||||||
};
|
|
||||||
|
|
||||||
ERR_FAIL_INDEX(track, animation->get_track_count());
|
ERR_FAIL_INDEX(track, animation->get_track_count());
|
||||||
|
|
||||||
node_path = animation->track_get_path(p_track);
|
node_path = animation->track_get_path(p_track);
|
||||||
type_icon = type_icons[animation->track_get_type(track)];
|
type_icon = _get_key_type_icon();
|
||||||
selected_icon = get_icon("KeySelected", "EditorIcons");
|
selected_icon = get_icon("KeySelected", "EditorIcons");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2431,6 +2424,18 @@ bool AnimationTrackEdit::_is_value_key_valid(const Variant &p_key_value, Variant
|
||||||
return (!prop_exists || Variant::can_convert(p_key_value.get_type(), r_valid_type));
|
return (!prop_exists || Variant::can_convert(p_key_value.get_type(), r_valid_type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<Texture> AnimationTrackEdit::_get_key_type_icon() const {
|
||||||
|
Ref<Texture> type_icons[6] = {
|
||||||
|
get_icon("KeyValue", "EditorIcons"),
|
||||||
|
get_icon("KeyXform", "EditorIcons"),
|
||||||
|
get_icon("KeyCall", "EditorIcons"),
|
||||||
|
get_icon("KeyBezier", "EditorIcons"),
|
||||||
|
get_icon("KeyAudio", "EditorIcons"),
|
||||||
|
get_icon("KeyAnimation", "EditorIcons")
|
||||||
|
};
|
||||||
|
return type_icons[animation->track_get_type(track)];
|
||||||
|
}
|
||||||
|
|
||||||
String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
|
String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
|
||||||
if (check_rect.has_point(p_pos)) {
|
if (check_rect.has_point(p_pos)) {
|
||||||
return TTR("Toggle this track on/off.");
|
return TTR("Toggle this track on/off.");
|
||||||
|
|
|
@ -180,6 +180,8 @@ class AnimationTrackEdit : public Control {
|
||||||
void _play_position_draw();
|
void _play_position_draw();
|
||||||
bool _is_value_key_valid(const Variant &p_key_value, Variant::Type &r_valid_type) const;
|
bool _is_value_key_valid(const Variant &p_key_value, Variant::Type &r_valid_type) const;
|
||||||
|
|
||||||
|
Ref<Texture> _get_key_type_icon() const;
|
||||||
|
|
||||||
mutable int dropping_at;
|
mutable int dropping_at;
|
||||||
float insert_at_pos;
|
float insert_at_pos;
|
||||||
bool moving_selection_attempt;
|
bool moving_selection_attempt;
|
||||||
|
|
|
@ -152,6 +152,8 @@ void AnimationPlayerEditor::_notification(int p_what) {
|
||||||
ITEM_ICON(TOOL_EDIT_TRANSITIONS, "Blend");
|
ITEM_ICON(TOOL_EDIT_TRANSITIONS, "Blend");
|
||||||
ITEM_ICON(TOOL_EDIT_RESOURCE, "Edit");
|
ITEM_ICON(TOOL_EDIT_RESOURCE, "Edit");
|
||||||
ITEM_ICON(TOOL_REMOVE_ANIM, "Remove");
|
ITEM_ICON(TOOL_REMOVE_ANIM, "Remove");
|
||||||
|
|
||||||
|
_update_animation_list_icons();
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -860,22 +862,13 @@ void AnimationPlayerEditor::_update_player() {
|
||||||
|
|
||||||
int active_idx = -1;
|
int active_idx = -1;
|
||||||
for (List<StringName>::Element *E = animlist.front(); E; E = E->next()) {
|
for (List<StringName>::Element *E = animlist.front(); E; E = E->next()) {
|
||||||
Ref<Texture> icon;
|
animation->add_item(E->get());
|
||||||
if (E->get() == player->get_autoplay()) {
|
|
||||||
if (E->get() == "RESET") {
|
|
||||||
icon = autoplay_reset_icon;
|
|
||||||
} else {
|
|
||||||
icon = autoplay_icon;
|
|
||||||
}
|
|
||||||
} else if (E->get() == "RESET") {
|
|
||||||
icon = reset_icon;
|
|
||||||
}
|
|
||||||
animation->add_icon_item(icon, E->get());
|
|
||||||
|
|
||||||
if (player->get_assigned_animation() == E->get()) {
|
if (player->get_assigned_animation() == E->get()) {
|
||||||
active_idx = animation->get_item_count() - 1;
|
active_idx = animation->get_item_count() - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_update_animation_list_icons();
|
||||||
|
|
||||||
updating = false;
|
updating = false;
|
||||||
if (active_idx != -1) {
|
if (active_idx != -1) {
|
||||||
|
@ -904,6 +897,30 @@ void AnimationPlayerEditor::_update_player() {
|
||||||
_update_animation();
|
_update_animation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AnimationPlayerEditor::_update_animation_list_icons() {
|
||||||
|
List<StringName> animlist;
|
||||||
|
if (player) {
|
||||||
|
player->get_animation_list(&animlist);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < animation->get_item_count(); i++) {
|
||||||
|
String name = animation->get_item_text(i);
|
||||||
|
|
||||||
|
Ref<Texture> icon;
|
||||||
|
if (name == player->get_autoplay()) {
|
||||||
|
if (name == "RESET") {
|
||||||
|
icon = autoplay_reset_icon;
|
||||||
|
} else {
|
||||||
|
icon = autoplay_icon;
|
||||||
|
}
|
||||||
|
} else if (name == "RESET") {
|
||||||
|
icon = reset_icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
animation->set_item_icon(i, icon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AnimationPlayerEditor::edit(AnimationPlayer *p_player) {
|
void AnimationPlayerEditor::edit(AnimationPlayer *p_player) {
|
||||||
if (player && pin->is_pressed()) {
|
if (player && pin->is_pressed()) {
|
||||||
return; // Ignore, pinned.
|
return; // Ignore, pinned.
|
||||||
|
|
|
@ -193,6 +193,7 @@ class AnimationPlayerEditor : public VBoxContainer {
|
||||||
void _list_changed();
|
void _list_changed();
|
||||||
void _update_animation();
|
void _update_animation();
|
||||||
void _update_player();
|
void _update_player();
|
||||||
|
void _update_animation_list_icons();
|
||||||
void _blend_edited();
|
void _blend_edited();
|
||||||
|
|
||||||
void _animation_player_changed(Object *p_pl);
|
void _animation_player_changed(Object *p_pl);
|
||||||
|
|
Loading…
Reference in a new issue