|
@@ -31,13 +31,13 @@
|
|
|
#include "animation_track_editor.h"
|
|
|
|
|
|
#include "animation_track_editor_plugins.h"
|
|
|
-#include "core/os/input.h"
|
|
|
+#include "core/input/input_filter.h"
|
|
|
#include "core/os/keyboard.h"
|
|
|
#include "editor/animation_bezier_editor.h"
|
|
|
#include "editor/plugins/animation_player_editor_plugin.h"
|
|
|
#include "editor_node.h"
|
|
|
#include "editor_scale.h"
|
|
|
-#include "scene/main/viewport.h"
|
|
|
+#include "scene/main/window.h"
|
|
|
#include "servers/audio/audio_stream.h"
|
|
|
|
|
|
class AnimationTrackKeyEdit : public Object {
|
|
@@ -1442,11 +1442,11 @@ void AnimationTimelineEdit::_anim_loop_pressed() {
|
|
|
|
|
|
int AnimationTimelineEdit::get_buttons_width() const {
|
|
|
|
|
|
- Ref<Texture2D> interp_mode = get_icon("TrackContinuous", "EditorIcons");
|
|
|
- Ref<Texture2D> interp_type = get_icon("InterpRaw", "EditorIcons");
|
|
|
- Ref<Texture2D> loop_type = get_icon("InterpWrapClamp", "EditorIcons");
|
|
|
- Ref<Texture2D> remove_icon = get_icon("Remove", "EditorIcons");
|
|
|
- Ref<Texture2D> down_icon = get_icon("select_arrow", "Tree");
|
|
|
+ Ref<Texture2D> interp_mode = get_theme_icon("TrackContinuous", "EditorIcons");
|
|
|
+ Ref<Texture2D> interp_type = get_theme_icon("InterpRaw", "EditorIcons");
|
|
|
+ Ref<Texture2D> loop_type = get_theme_icon("InterpWrapClamp", "EditorIcons");
|
|
|
+ Ref<Texture2D> remove_icon = get_theme_icon("Remove", "EditorIcons");
|
|
|
+ Ref<Texture2D> down_icon = get_theme_icon("select_arrow", "Tree");
|
|
|
|
|
|
int total_w = interp_mode->get_width() + interp_type->get_width() + loop_type->get_width() + remove_icon->get_width();
|
|
|
total_w += (down_icon->get_width() + 4 * EDSCALE) * 4;
|
|
@@ -1456,7 +1456,7 @@ int AnimationTimelineEdit::get_buttons_width() const {
|
|
|
|
|
|
int AnimationTimelineEdit::get_name_limit() const {
|
|
|
|
|
|
- Ref<Texture2D> hsize_icon = get_icon("Hsize", "EditorIcons");
|
|
|
+ Ref<Texture2D> hsize_icon = get_theme_icon("Hsize", "EditorIcons");
|
|
|
|
|
|
int limit = MAX(name_limit, add_track->get_minimum_size().width + hsize_icon->get_width());
|
|
|
|
|
@@ -1468,17 +1468,17 @@ int AnimationTimelineEdit::get_name_limit() const {
|
|
|
void AnimationTimelineEdit::_notification(int p_what) {
|
|
|
|
|
|
if (p_what == NOTIFICATION_ENTER_TREE) {
|
|
|
- add_track->set_icon(get_icon("Add", "EditorIcons"));
|
|
|
- loop->set_icon(get_icon("Loop", "EditorIcons"));
|
|
|
- time_icon->set_texture(get_icon("Time", "EditorIcons"));
|
|
|
+ add_track->set_icon(get_theme_icon("Add", "EditorIcons"));
|
|
|
+ loop->set_icon(get_theme_icon("Loop", "EditorIcons"));
|
|
|
+ time_icon->set_texture(get_theme_icon("Time", "EditorIcons"));
|
|
|
|
|
|
add_track->get_popup()->clear();
|
|
|
- add_track->get_popup()->add_icon_item(get_icon("KeyValue", "EditorIcons"), TTR("Property Track"));
|
|
|
- add_track->get_popup()->add_icon_item(get_icon("KeyXform", "EditorIcons"), TTR("3D Transform Track"));
|
|
|
- add_track->get_popup()->add_icon_item(get_icon("KeyCall", "EditorIcons"), TTR("Call Method Track"));
|
|
|
- add_track->get_popup()->add_icon_item(get_icon("KeyBezier", "EditorIcons"), TTR("Bezier Curve Track"));
|
|
|
- add_track->get_popup()->add_icon_item(get_icon("KeyAudio", "EditorIcons"), TTR("Audio Playback Track"));
|
|
|
- add_track->get_popup()->add_icon_item(get_icon("KeyAnimation", "EditorIcons"), TTR("Animation Playback Track"));
|
|
|
+ add_track->get_popup()->add_icon_item(get_theme_icon("KeyValue", "EditorIcons"), TTR("Property Track"));
|
|
|
+ add_track->get_popup()->add_icon_item(get_theme_icon("KeyXform", "EditorIcons"), TTR("3D Transform Track"));
|
|
|
+ add_track->get_popup()->add_icon_item(get_theme_icon("KeyCall", "EditorIcons"), TTR("Call Method Track"));
|
|
|
+ add_track->get_popup()->add_icon_item(get_theme_icon("KeyBezier", "EditorIcons"), TTR("Bezier Curve Track"));
|
|
|
+ add_track->get_popup()->add_icon_item(get_theme_icon("KeyAudio", "EditorIcons"), TTR("Audio Playback Track"));
|
|
|
+ add_track->get_popup()->add_icon_item(get_theme_icon("KeyAnimation", "EditorIcons"), TTR("Animation Playback Track"));
|
|
|
}
|
|
|
|
|
|
if (p_what == NOTIFICATION_RESIZED) {
|
|
@@ -1493,8 +1493,8 @@ void AnimationTimelineEdit::_notification(int p_what) {
|
|
|
if (!animation.is_valid())
|
|
|
return;
|
|
|
|
|
|
- Ref<Font> font = get_font("font", "Label");
|
|
|
- Color color = get_color("font_color", "Label");
|
|
|
+ Ref<Font> font = get_theme_font("font", "Label");
|
|
|
+ Color color = get_theme_color("font_color", "Label");
|
|
|
|
|
|
int zoomw = key_range;
|
|
|
float scale = get_zoom_scale();
|
|
@@ -1504,7 +1504,7 @@ void AnimationTimelineEdit::_notification(int p_what) {
|
|
|
if (l <= 0)
|
|
|
l = 0.001; //avoid crashor
|
|
|
|
|
|
- Ref<Texture2D> hsize_icon = get_icon("Hsize", "EditorIcons");
|
|
|
+ Ref<Texture2D> hsize_icon = get_theme_icon("Hsize", "EditorIcons");
|
|
|
hsize_rect = Rect2(get_name_limit() - hsize_icon->get_width() - 2 * EDSCALE, (get_size().height - hsize_icon->get_height()) / 2, hsize_icon->get_width(), hsize_icon->get_height());
|
|
|
draw_texture(hsize_icon, hsize_rect.position);
|
|
|
|
|
@@ -1554,7 +1554,7 @@ void AnimationTimelineEdit::_notification(int p_what) {
|
|
|
|
|
|
int end_px = (l - get_value()) * scale;
|
|
|
int begin_px = -get_value() * scale;
|
|
|
- Color notimecol = get_color("dark_color_2", "Editor");
|
|
|
+ Color notimecol = get_theme_color("dark_color_2", "Editor");
|
|
|
Color timecolor = color;
|
|
|
timecolor.a = 0.2;
|
|
|
Color linecolor = color;
|
|
@@ -1685,9 +1685,9 @@ void AnimationTimelineEdit::set_animation(const Ref<Animation> &p_animation) {
|
|
|
Size2 AnimationTimelineEdit::get_minimum_size() const {
|
|
|
|
|
|
Size2 ms = add_track->get_minimum_size();
|
|
|
- Ref<Font> font = get_font("font", "Label");
|
|
|
+ Ref<Font> font = get_theme_font("font", "Label");
|
|
|
ms.height = MAX(ms.height, font->get_height());
|
|
|
- ms.width = get_buttons_width() + add_track->get_minimum_size().width + get_icon("Hsize", "EditorIcons")->get_width() + 2;
|
|
|
+ ms.width = get_buttons_width() + add_track->get_minimum_size().width + get_theme_icon("Hsize", "EditorIcons")->get_width() + 2;
|
|
|
return ms;
|
|
|
}
|
|
|
|
|
@@ -1746,11 +1746,11 @@ void AnimationTimelineEdit::_play_position_draw() {
|
|
|
int px = (-get_value() + play_position_pos) * scale + get_name_limit();
|
|
|
|
|
|
if (px >= get_name_limit() && px < (play_position->get_size().width - get_buttons_width())) {
|
|
|
- Color color = get_color("accent_color", "Editor");
|
|
|
+ Color color = get_theme_color("accent_color", "Editor");
|
|
|
play_position->draw_line(Point2(px, 0), Point2(px, h), color, Math::round(2 * EDSCALE));
|
|
|
play_position->draw_texture(
|
|
|
- get_icon("TimelineIndicator", "EditorIcons"),
|
|
|
- Point2(px - get_icon("TimelineIndicator", "EditorIcons")->get_width() * 0.5, 0),
|
|
|
+ get_theme_icon("TimelineIndicator", "EditorIcons"),
|
|
|
+ Point2(px - get_theme_icon("TimelineIndicator", "EditorIcons")->get_width() * 0.5, 0),
|
|
|
color);
|
|
|
}
|
|
|
}
|
|
@@ -1921,23 +1921,23 @@ void AnimationTrackEdit::_notification(int p_what) {
|
|
|
int limit = timeline->get_name_limit();
|
|
|
|
|
|
if (has_focus()) {
|
|
|
- Color accent = get_color("accent_color", "Editor");
|
|
|
+ Color accent = get_theme_color("accent_color", "Editor");
|
|
|
accent.a *= 0.7;
|
|
|
// Offside so the horizontal sides aren't cutoff.
|
|
|
draw_rect(Rect2(Point2(1 * EDSCALE, 0), get_size() - Size2(1 * EDSCALE, 0)), accent, false);
|
|
|
}
|
|
|
|
|
|
- Ref<Font> font = get_font("font", "Label");
|
|
|
- Color color = get_color("font_color", "Label");
|
|
|
+ Ref<Font> font = get_theme_font("font", "Label");
|
|
|
+ Color color = get_theme_color("font_color", "Label");
|
|
|
Ref<Texture2D> 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")
|
|
|
+ get_theme_icon("KeyValue", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyXform", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyCall", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyBezier", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyAudio", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyAnimation", "EditorIcons")
|
|
|
};
|
|
|
- int hsep = get_constant("hseparation", "ItemList");
|
|
|
+ int hsep = get_theme_constant("hseparation", "ItemList");
|
|
|
Color linecolor = color;
|
|
|
linecolor.a = 0.2;
|
|
|
|
|
@@ -1945,7 +1945,7 @@ void AnimationTrackEdit::_notification(int p_what) {
|
|
|
|
|
|
{
|
|
|
|
|
|
- Ref<Texture2D> check = animation->track_is_enabled(track) ? get_icon("checked", "CheckBox") : get_icon("unchecked", "CheckBox");
|
|
|
+ Ref<Texture2D> check = animation->track_is_enabled(track) ? get_theme_icon("checked", "CheckBox") : get_theme_icon("unchecked", "CheckBox");
|
|
|
|
|
|
int ofs = in_group ? check->get_width() : 0; //not the best reference for margin but..
|
|
|
|
|
@@ -1966,7 +1966,7 @@ void AnimationTrackEdit::_notification(int p_what) {
|
|
|
String text;
|
|
|
Color text_color = color;
|
|
|
if (node && EditorNode::get_singleton()->get_editor_selection()->is_selected(node)) {
|
|
|
- text_color = get_color("accent_color", "Editor");
|
|
|
+ text_color = get_theme_color("accent_color", "Editor");
|
|
|
}
|
|
|
|
|
|
if (in_group) {
|
|
@@ -2045,25 +2045,25 @@ void AnimationTrackEdit::_notification(int p_what) {
|
|
|
{
|
|
|
|
|
|
Ref<Texture2D> wrap_icon[2] = {
|
|
|
- get_icon("InterpWrapClamp", "EditorIcons"),
|
|
|
- get_icon("InterpWrapLoop", "EditorIcons"),
|
|
|
+ get_theme_icon("InterpWrapClamp", "EditorIcons"),
|
|
|
+ get_theme_icon("InterpWrapLoop", "EditorIcons"),
|
|
|
};
|
|
|
|
|
|
Ref<Texture2D> interp_icon[3] = {
|
|
|
- get_icon("InterpRaw", "EditorIcons"),
|
|
|
- get_icon("InterpLinear", "EditorIcons"),
|
|
|
- get_icon("InterpCubic", "EditorIcons")
|
|
|
+ get_theme_icon("InterpRaw", "EditorIcons"),
|
|
|
+ get_theme_icon("InterpLinear", "EditorIcons"),
|
|
|
+ get_theme_icon("InterpCubic", "EditorIcons")
|
|
|
};
|
|
|
Ref<Texture2D> cont_icon[4] = {
|
|
|
- get_icon("TrackContinuous", "EditorIcons"),
|
|
|
- get_icon("TrackDiscrete", "EditorIcons"),
|
|
|
- get_icon("TrackTrigger", "EditorIcons"),
|
|
|
- get_icon("TrackCapture", "EditorIcons")
|
|
|
+ get_theme_icon("TrackContinuous", "EditorIcons"),
|
|
|
+ get_theme_icon("TrackDiscrete", "EditorIcons"),
|
|
|
+ get_theme_icon("TrackTrigger", "EditorIcons"),
|
|
|
+ get_theme_icon("TrackCapture", "EditorIcons")
|
|
|
};
|
|
|
|
|
|
int ofs = get_size().width - timeline->get_buttons_width();
|
|
|
|
|
|
- Ref<Texture2D> down_icon = get_icon("select_arrow", "Tree");
|
|
|
+ Ref<Texture2D> down_icon = get_theme_icon("select_arrow", "Tree");
|
|
|
|
|
|
draw_line(Point2(ofs, 0), Point2(ofs, get_size().height), linecolor, Math::round(EDSCALE));
|
|
|
|
|
@@ -2100,7 +2100,7 @@ void AnimationTrackEdit::_notification(int p_what) {
|
|
|
update_mode_rect.size.x += down_icon->get_width();
|
|
|
bezier_edit_rect = Rect2();
|
|
|
} else if (animation->track_get_type(track) == Animation::TYPE_BEZIER) {
|
|
|
- Ref<Texture2D> bezier_icon = get_icon("EditBezier", "EditorIcons");
|
|
|
+ Ref<Texture2D> bezier_icon = get_theme_icon("EditBezier", "EditorIcons");
|
|
|
update_mode_rect.size.x += down_icon->get_width();
|
|
|
bezier_edit_rect.position = update_mode_rect.position + (update_mode_rect.size - bezier_icon->get_size()) / 2;
|
|
|
bezier_edit_rect.size = bezier_icon->get_size();
|
|
@@ -2185,7 +2185,7 @@ void AnimationTrackEdit::_notification(int p_what) {
|
|
|
{
|
|
|
//erase
|
|
|
|
|
|
- Ref<Texture2D> icon = get_icon("Remove", "EditorIcons");
|
|
|
+ Ref<Texture2D> icon = get_theme_icon("Remove", "EditorIcons");
|
|
|
|
|
|
remove_rect.position.x = ofs + ((get_size().width - ofs) - icon->get_width()) / 2;
|
|
|
remove_rect.position.y = int(get_size().height - icon->get_height()) / 2;
|
|
@@ -2202,7 +2202,7 @@ void AnimationTrackEdit::_notification(int p_what) {
|
|
|
}
|
|
|
|
|
|
if (dropping_at != 0) {
|
|
|
- Color drop_color = get_color("accent_color", "Editor");
|
|
|
+ Color drop_color = get_theme_color("accent_color", "Editor");
|
|
|
if (dropping_at < 0) {
|
|
|
draw_line(Vector2(0, 0), Vector2(get_size().width, 0), drop_color, Math::round(EDSCALE));
|
|
|
} else {
|
|
@@ -2249,7 +2249,7 @@ void AnimationTrackEdit::draw_key_link(int p_index, float p_pixels_sec, int p_x,
|
|
|
if (current != next)
|
|
|
return;
|
|
|
|
|
|
- Color color = get_color("font_color", "Label");
|
|
|
+ Color color = get_theme_color("font_color", "Label");
|
|
|
color.a = 0.5;
|
|
|
|
|
|
int from_x = MAX(p_x, p_clip_left);
|
|
@@ -2273,15 +2273,15 @@ void AnimationTrackEdit::draw_key(int p_index, float p_pixels_sec, int p_x, bool
|
|
|
const Variant &v = animation->track_get_key_value(track, p_index);
|
|
|
Variant::Type valid_type = Variant::NIL;
|
|
|
if (!_is_value_key_valid(v, valid_type)) {
|
|
|
- icon_to_draw = get_icon("KeyInvalid", "EditorIcons");
|
|
|
+ icon_to_draw = get_theme_icon("KeyInvalid", "EditorIcons");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Vector2 ofs(p_x - icon_to_draw->get_width() / 2, int(get_size().height - icon_to_draw->get_height()) / 2);
|
|
|
|
|
|
if (animation->track_get_type(track) == Animation::TYPE_METHOD) {
|
|
|
- Ref<Font> font = get_font("font", "Label");
|
|
|
- Color color = get_color("font_color", "Label");
|
|
|
+ Ref<Font> font = get_theme_font("font", "Label");
|
|
|
+ Color color = get_theme_color("font_color", "Label");
|
|
|
color.a = 0.5;
|
|
|
|
|
|
Dictionary d = animation->track_get_key_value(track, p_index);
|
|
@@ -2387,19 +2387,19 @@ void AnimationTrackEdit::set_animation_and_track(const Ref<Animation> &p_animati
|
|
|
update();
|
|
|
|
|
|
Ref<Texture2D> 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")
|
|
|
+ get_theme_icon("KeyValue", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyXform", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyCall", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyBezier", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyAudio", "EditorIcons"),
|
|
|
+ get_theme_icon("KeyAnimation", "EditorIcons")
|
|
|
};
|
|
|
|
|
|
ERR_FAIL_INDEX(track, animation->get_track_count());
|
|
|
|
|
|
node_path = animation->track_get_path(p_track);
|
|
|
type_icon = type_icons[animation->track_get_type(track)];
|
|
|
- selected_icon = get_icon("KeySelected", "EditorIcons");
|
|
|
+ selected_icon = get_theme_icon("KeySelected", "EditorIcons");
|
|
|
}
|
|
|
|
|
|
NodePath AnimationTrackEdit::get_path() const {
|
|
@@ -2408,9 +2408,9 @@ NodePath AnimationTrackEdit::get_path() const {
|
|
|
|
|
|
Size2 AnimationTrackEdit::get_minimum_size() const {
|
|
|
|
|
|
- Ref<Texture2D> texture = get_icon("Object", "EditorIcons");
|
|
|
- Ref<Font> font = get_font("font", "Label");
|
|
|
- int separation = get_constant("vseparation", "ItemList");
|
|
|
+ Ref<Texture2D> texture = get_theme_icon("Object", "EditorIcons");
|
|
|
+ Ref<Font> font = get_theme_font("font", "Label");
|
|
|
+ int separation = get_theme_constant("vseparation", "ItemList");
|
|
|
|
|
|
int max_h = MAX(texture->get_height(), font->get_height());
|
|
|
max_h = MAX(max_h, get_key_height());
|
|
@@ -2442,7 +2442,7 @@ void AnimationTrackEdit::_play_position_draw() {
|
|
|
int px = (-timeline->get_value() + play_position_pos) * scale + timeline->get_name_limit();
|
|
|
|
|
|
if (px >= timeline->get_name_limit() && px < (get_size().width - timeline->get_buttons_width())) {
|
|
|
- Color color = get_color("accent_color", "Editor");
|
|
|
+ Color color = get_theme_color("accent_color", "Editor");
|
|
|
play_position->draw_line(Point2(px, 0), Point2(px, h), color, Math::round(2 * EDSCALE));
|
|
|
}
|
|
|
}
|
|
@@ -2471,6 +2471,7 @@ void AnimationTrackEdit::_path_entered(const String &p_text) {
|
|
|
undo_redo->add_do_method(animation.ptr(), "track_set_path", track, p_text);
|
|
|
undo_redo->add_undo_method(animation.ptr(), "track_set_path", track, animation->track_get_path(track));
|
|
|
undo_redo->commit_action();
|
|
|
+ path_popup->hide();
|
|
|
}
|
|
|
|
|
|
bool AnimationTrackEdit::_is_value_key_valid(const Variant &p_key_value, Variant::Type &r_valid_type) const {
|
|
@@ -2689,14 +2690,14 @@ void AnimationTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|
|
menu->connect("id_pressed", callable_mp(this, &AnimationTrackEdit::_menu_selected));
|
|
|
}
|
|
|
menu->clear();
|
|
|
- menu->add_icon_item(get_icon("TrackContinuous", "EditorIcons"), TTR("Continuous"), MENU_CALL_MODE_CONTINUOUS);
|
|
|
- menu->add_icon_item(get_icon("TrackDiscrete", "EditorIcons"), TTR("Discrete"), MENU_CALL_MODE_DISCRETE);
|
|
|
- menu->add_icon_item(get_icon("TrackTrigger", "EditorIcons"), TTR("Trigger"), MENU_CALL_MODE_TRIGGER);
|
|
|
- menu->add_icon_item(get_icon("TrackCapture", "EditorIcons"), TTR("Capture"), MENU_CALL_MODE_CAPTURE);
|
|
|
+ menu->add_icon_item(get_theme_icon("TrackContinuous", "EditorIcons"), TTR("Continuous"), MENU_CALL_MODE_CONTINUOUS);
|
|
|
+ menu->add_icon_item(get_theme_icon("TrackDiscrete", "EditorIcons"), TTR("Discrete"), MENU_CALL_MODE_DISCRETE);
|
|
|
+ menu->add_icon_item(get_theme_icon("TrackTrigger", "EditorIcons"), TTR("Trigger"), MENU_CALL_MODE_TRIGGER);
|
|
|
+ menu->add_icon_item(get_theme_icon("TrackCapture", "EditorIcons"), TTR("Capture"), MENU_CALL_MODE_CAPTURE);
|
|
|
menu->set_as_minsize();
|
|
|
|
|
|
- Vector2 popup_pos = get_global_position() + update_mode_rect.position + Vector2(0, update_mode_rect.size.height);
|
|
|
- menu->set_global_position(popup_pos);
|
|
|
+ Vector2 popup_pos = get_screen_position() + update_mode_rect.position + Vector2(0, update_mode_rect.size.height);
|
|
|
+ menu->set_position(popup_pos);
|
|
|
menu->popup();
|
|
|
accept_event();
|
|
|
}
|
|
@@ -2708,13 +2709,13 @@ void AnimationTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|
|
menu->connect("id_pressed", callable_mp(this, &AnimationTrackEdit::_menu_selected));
|
|
|
}
|
|
|
menu->clear();
|
|
|
- menu->add_icon_item(get_icon("InterpRaw", "EditorIcons"), TTR("Nearest"), MENU_INTERPOLATION_NEAREST);
|
|
|
- menu->add_icon_item(get_icon("InterpLinear", "EditorIcons"), TTR("Linear"), MENU_INTERPOLATION_LINEAR);
|
|
|
- menu->add_icon_item(get_icon("InterpCubic", "EditorIcons"), TTR("Cubic"), MENU_INTERPOLATION_CUBIC);
|
|
|
+ menu->add_icon_item(get_theme_icon("InterpRaw", "EditorIcons"), TTR("Nearest"), MENU_INTERPOLATION_NEAREST);
|
|
|
+ menu->add_icon_item(get_theme_icon("InterpLinear", "EditorIcons"), TTR("Linear"), MENU_INTERPOLATION_LINEAR);
|
|
|
+ menu->add_icon_item(get_theme_icon("InterpCubic", "EditorIcons"), TTR("Cubic"), MENU_INTERPOLATION_CUBIC);
|
|
|
menu->set_as_minsize();
|
|
|
|
|
|
- Vector2 popup_pos = get_global_position() + interp_mode_rect.position + Vector2(0, interp_mode_rect.size.height);
|
|
|
- menu->set_global_position(popup_pos);
|
|
|
+ Vector2 popup_pos = get_screen_position() + interp_mode_rect.position + Vector2(0, interp_mode_rect.size.height);
|
|
|
+ menu->set_position(popup_pos);
|
|
|
menu->popup();
|
|
|
accept_event();
|
|
|
}
|
|
@@ -2726,12 +2727,12 @@ void AnimationTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|
|
menu->connect("id_pressed", callable_mp(this, &AnimationTrackEdit::_menu_selected));
|
|
|
}
|
|
|
menu->clear();
|
|
|
- menu->add_icon_item(get_icon("InterpWrapClamp", "EditorIcons"), TTR("Clamp Loop Interp"), MENU_LOOP_CLAMP);
|
|
|
- menu->add_icon_item(get_icon("InterpWrapLoop", "EditorIcons"), TTR("Wrap Loop Interp"), MENU_LOOP_WRAP);
|
|
|
+ menu->add_icon_item(get_theme_icon("InterpWrapClamp", "EditorIcons"), TTR("Clamp Loop Interp"), MENU_LOOP_CLAMP);
|
|
|
+ menu->add_icon_item(get_theme_icon("InterpWrapLoop", "EditorIcons"), TTR("Wrap Loop Interp"), MENU_LOOP_WRAP);
|
|
|
menu->set_as_minsize();
|
|
|
|
|
|
- Vector2 popup_pos = get_global_position() + loop_mode_rect.position + Vector2(0, loop_mode_rect.size.height);
|
|
|
- menu->set_global_position(popup_pos);
|
|
|
+ Vector2 popup_pos = get_screen_position() + loop_mode_rect.position + Vector2(0, loop_mode_rect.size.height);
|
|
|
+ menu->set_position(popup_pos);
|
|
|
menu->popup();
|
|
|
accept_event();
|
|
|
}
|
|
@@ -2822,17 +2823,17 @@ void AnimationTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|
|
}
|
|
|
|
|
|
menu->clear();
|
|
|
- menu->add_icon_item(get_icon("Key", "EditorIcons"), TTR("Insert Key"), MENU_KEY_INSERT);
|
|
|
+ menu->add_icon_item(get_theme_icon("Key", "EditorIcons"), TTR("Insert Key"), MENU_KEY_INSERT);
|
|
|
if (editor->is_selection_active()) {
|
|
|
menu->add_separator();
|
|
|
- menu->add_icon_item(get_icon("Duplicate", "EditorIcons"), TTR("Duplicate Key(s)"), MENU_KEY_DUPLICATE);
|
|
|
+ menu->add_icon_item(get_theme_icon("Duplicate", "EditorIcons"), TTR("Duplicate Key(s)"), MENU_KEY_DUPLICATE);
|
|
|
menu->add_separator();
|
|
|
- menu->add_icon_item(get_icon("Remove", "EditorIcons"), TTR("Delete Key(s)"), MENU_KEY_DELETE);
|
|
|
+ menu->add_icon_item(get_theme_icon("Remove", "EditorIcons"), TTR("Delete Key(s)"), MENU_KEY_DELETE);
|
|
|
}
|
|
|
menu->set_as_minsize();
|
|
|
|
|
|
- Vector2 popup_pos = get_global_transform().xform(get_local_mouse_position());
|
|
|
- menu->set_global_position(popup_pos);
|
|
|
+ Vector2 popup_pos = get_screen_transform().xform(get_local_mouse_position());
|
|
|
+ menu->set_position(popup_pos);
|
|
|
menu->popup();
|
|
|
|
|
|
insert_at_pos = offset + timeline->get_value();
|
|
@@ -2843,17 +2844,20 @@ void AnimationTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|
|
if (mb.is_valid() && !mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT && clicking_on_name) {
|
|
|
|
|
|
if (!path) {
|
|
|
+ path_popup = memnew(Popup);
|
|
|
+ path_popup->set_wrap_controls(true);
|
|
|
+ add_child(path_popup);
|
|
|
path = memnew(LineEdit);
|
|
|
- add_child(path);
|
|
|
- path->set_as_toplevel(true);
|
|
|
+ path_popup->add_child(path);
|
|
|
+ path->set_anchors_and_margins_preset(PRESET_WIDE);
|
|
|
path->connect("text_entered", callable_mp(this, &AnimationTrackEdit::_path_entered));
|
|
|
}
|
|
|
|
|
|
path->set_text(animation->track_get_path(track));
|
|
|
- Vector2 theme_ofs = path->get_stylebox("normal", "LineEdit")->get_offset();
|
|
|
- path->set_position(get_global_position() + path_rect.position - theme_ofs);
|
|
|
- path->set_size(path_rect.size);
|
|
|
- path->show_modal();
|
|
|
+ Vector2 theme_ofs = path->get_theme_stylebox("normal", "LineEdit")->get_offset();
|
|
|
+ path_popup->set_position(get_screen_position() + path_rect.position - theme_ofs);
|
|
|
+ path_popup->set_size(path_rect.size);
|
|
|
+ path_popup->popup();
|
|
|
path->grab_focus();
|
|
|
path->set_cursor_position(path->get_text().length());
|
|
|
clicking_on_name = false;
|
|
@@ -3090,6 +3094,7 @@ AnimationTrackEdit::AnimationTrackEdit() {
|
|
|
timeline = NULL;
|
|
|
root = NULL;
|
|
|
path = NULL;
|
|
|
+ path_popup = NULL;
|
|
|
menu = NULL;
|
|
|
clicking_on_name = false;
|
|
|
dropping_at = 0;
|
|
@@ -3158,18 +3163,18 @@ AnimationTrackEdit *AnimationTrackEditPlugin::create_animation_track_edit(Object
|
|
|
void AnimationTrackEditGroup::_notification(int p_what) {
|
|
|
|
|
|
if (p_what == NOTIFICATION_DRAW) {
|
|
|
- Ref<Font> font = get_font("font", "Label");
|
|
|
- int separation = get_constant("hseparation", "ItemList");
|
|
|
- Color color = get_color("font_color", "Label");
|
|
|
+ Ref<Font> font = get_theme_font("font", "Label");
|
|
|
+ int separation = get_theme_constant("hseparation", "ItemList");
|
|
|
+ Color color = get_theme_color("font_color", "Label");
|
|
|
|
|
|
if (root && root->has_node(node)) {
|
|
|
Node *n = root->get_node(node);
|
|
|
if (n && EditorNode::get_singleton()->get_editor_selection()->is_selected(n)) {
|
|
|
- color = get_color("accent_color", "Editor");
|
|
|
+ color = get_theme_color("accent_color", "Editor");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Color bgcol = get_color("dark_color_2", "Editor");
|
|
|
+ Color bgcol = get_theme_color("dark_color_2", "Editor");
|
|
|
bgcol.a *= 0.6;
|
|
|
draw_rect(Rect2(Point2(), get_size()), bgcol);
|
|
|
Color linecolor = color;
|
|
@@ -3187,7 +3192,7 @@ void AnimationTrackEditGroup::_notification(int p_what) {
|
|
|
int px = (-timeline->get_value() + timeline->get_play_position()) * timeline->get_zoom_scale() + timeline->get_name_limit();
|
|
|
|
|
|
if (px >= timeline->get_name_limit() && px < (get_size().width - timeline->get_buttons_width())) {
|
|
|
- Color accent = get_color("accent_color", "Editor");
|
|
|
+ Color accent = get_theme_color("accent_color", "Editor");
|
|
|
draw_line(Point2(px, 0), Point2(px, get_size().height), accent, Math::round(2 * EDSCALE));
|
|
|
}
|
|
|
}
|
|
@@ -3203,8 +3208,8 @@ void AnimationTrackEditGroup::set_type_and_name(const Ref<Texture2D> &p_type, co
|
|
|
|
|
|
Size2 AnimationTrackEditGroup::get_minimum_size() const {
|
|
|
|
|
|
- Ref<Font> font = get_font("font", "Label");
|
|
|
- int separation = get_constant("vseparation", "ItemList");
|
|
|
+ Ref<Font> font = get_theme_font("font", "Label");
|
|
|
+ int separation = get_theme_constant("vseparation", "ItemList");
|
|
|
|
|
|
return Vector2(0, MAX(font->get_height(), icon->get_height()) + separation);
|
|
|
}
|
|
@@ -3443,7 +3448,7 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) {
|
|
|
|
|
|
if (insert_frame != Engine::get_singleton()->get_frames_drawn()) {
|
|
|
//clear insert list for the frame if frame changed
|
|
|
- if (insert_confirm->is_visible_in_tree())
|
|
|
+ if (insert_confirm->is_visible())
|
|
|
return; //do nothing
|
|
|
insert_data.clear();
|
|
|
insert_query = false;
|
|
@@ -3496,7 +3501,7 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) {
|
|
|
|
|
|
insert_confirm_bezier->set_visible(all_bezier);
|
|
|
insert_confirm->get_ok()->set_text(TTR("Create"));
|
|
|
- insert_confirm->popup_centered_minsize();
|
|
|
+ insert_confirm->popup_centered();
|
|
|
insert_query = true;
|
|
|
} else {
|
|
|
call_deferred("_insert_delay");
|
|
@@ -4095,7 +4100,7 @@ bool AnimationTrackEditor::is_selection_active() const {
|
|
|
}
|
|
|
|
|
|
bool AnimationTrackEditor::is_snap_enabled() const {
|
|
|
- return snap->is_pressed() ^ Input::get_singleton()->is_key_pressed(KEY_CONTROL);
|
|
|
+ return snap->is_pressed() ^ InputFilter::get_singleton()->is_key_pressed(KEY_CONTROL);
|
|
|
}
|
|
|
|
|
|
void AnimationTrackEditor::_update_tracks() {
|
|
@@ -4207,7 +4212,7 @@ void AnimationTrackEditor::_update_tracks() {
|
|
|
|
|
|
if (!group_sort.has(base_path)) {
|
|
|
AnimationTrackEditGroup *g = memnew(AnimationTrackEditGroup);
|
|
|
- Ref<Texture2D> icon = get_icon("Node", "EditorIcons");
|
|
|
+ Ref<Texture2D> icon = get_theme_icon("Node", "EditorIcons");
|
|
|
String name = base_path;
|
|
|
String tooltip;
|
|
|
if (root && root->has_node(base_path)) {
|
|
@@ -4225,7 +4230,7 @@ void AnimationTrackEditor::_update_tracks() {
|
|
|
g->set_timeline(timeline);
|
|
|
groups.push_back(g);
|
|
|
VBoxContainer *vb = memnew(VBoxContainer);
|
|
|
- vb->add_constant_override("separation", 0);
|
|
|
+ vb->add_theme_constant_override("separation", 0);
|
|
|
vb->add_child(g);
|
|
|
track_vbox->add_child(vb);
|
|
|
group_sort[base_path] = vb;
|
|
@@ -4368,12 +4373,12 @@ MenuButton *AnimationTrackEditor::get_edit_menu() {
|
|
|
|
|
|
void AnimationTrackEditor::_notification(int p_what) {
|
|
|
if (p_what == NOTIFICATION_THEME_CHANGED || p_what == NOTIFICATION_ENTER_TREE) {
|
|
|
- zoom_icon->set_texture(get_icon("Zoom", "EditorIcons"));
|
|
|
- snap->set_icon(get_icon("Snap", "EditorIcons"));
|
|
|
- view_group->set_icon(get_icon(view_group->is_pressed() ? "AnimationTrackList" : "AnimationTrackGroup", "EditorIcons"));
|
|
|
- selected_filter->set_icon(get_icon("AnimationFilter", "EditorIcons"));
|
|
|
- imported_anim_warning->set_icon(get_icon("NodeWarning", "EditorIcons"));
|
|
|
- main_panel->add_style_override("panel", get_stylebox("bg", "Tree"));
|
|
|
+ zoom_icon->set_texture(get_theme_icon("Zoom", "EditorIcons"));
|
|
|
+ snap->set_icon(get_theme_icon("Snap", "EditorIcons"));
|
|
|
+ view_group->set_icon(get_theme_icon(view_group->is_pressed() ? "AnimationTrackList" : "AnimationTrackGroup", "EditorIcons"));
|
|
|
+ selected_filter->set_icon(get_theme_icon("AnimationFilter", "EditorIcons"));
|
|
|
+ imported_anim_warning->set_icon(get_theme_icon("NodeWarning", "EditorIcons"));
|
|
|
+ main_panel->add_theme_style_override("panel", get_theme_stylebox("bg", "Tree"));
|
|
|
}
|
|
|
|
|
|
if (p_what == NOTIFICATION_READY) {
|
|
@@ -5050,8 +5055,8 @@ float AnimationTrackEditor::get_moving_selection_offset() const {
|
|
|
void AnimationTrackEditor::_box_selection_draw() {
|
|
|
|
|
|
const Rect2 selection_rect = Rect2(Point2(), box_selection->get_size());
|
|
|
- box_selection->draw_rect(selection_rect, get_color("box_selection_fill_color", "Editor"));
|
|
|
- box_selection->draw_rect(selection_rect, get_color("box_selection_stroke_color", "Editor"), false, Math::round(EDSCALE));
|
|
|
+ box_selection->draw_rect(selection_rect, get_theme_color("box_selection_fill_color", "Editor"));
|
|
|
+ box_selection->draw_rect(selection_rect, get_theme_color("box_selection_stroke_color", "Editor"), false, Math::round(EDSCALE));
|
|
|
}
|
|
|
|
|
|
void AnimationTrackEditor::_scroll_input(const Ref<InputEvent> &p_event) {
|
|
@@ -5266,10 +5271,10 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|
|
}
|
|
|
|
|
|
String text;
|
|
|
- Ref<Texture2D> icon = get_icon("Node", "EditorIcons");
|
|
|
+ Ref<Texture2D> icon = get_theme_icon("Node", "EditorIcons");
|
|
|
if (node) {
|
|
|
- if (has_icon(node->get_class(), "EditorIcons")) {
|
|
|
- icon = get_icon(node->get_class(), "EditorIcons");
|
|
|
+ if (has_theme_icon(node->get_class(), "EditorIcons")) {
|
|
|
+ icon = get_theme_icon(node->get_class(), "EditorIcons");
|
|
|
}
|
|
|
|
|
|
text = node->get_name();
|
|
@@ -5309,7 +5314,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|
|
it->set_metadata(0, md);
|
|
|
}
|
|
|
|
|
|
- track_copy_dialog->popup_centered_minsize(Size2(350, 500) * EDSCALE);
|
|
|
+ track_copy_dialog->popup_centered(Size2(350, 500) * EDSCALE);
|
|
|
} break;
|
|
|
case EDIT_COPY_TRACKS_CONFIRM: {
|
|
|
|
|
@@ -5578,7 +5583,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|
|
|
|
|
} break;
|
|
|
case EDIT_CLEAN_UP_ANIMATION: {
|
|
|
- cleanup_dialog->popup_centered_minsize(Size2(300, 0) * EDSCALE);
|
|
|
+ cleanup_dialog->popup_centered(Size2(300, 0) * EDSCALE);
|
|
|
|
|
|
} break;
|
|
|
case EDIT_CLEAN_UP_ANIMATION_CONFIRM: {
|
|
@@ -5652,7 +5657,7 @@ void AnimationTrackEditor::_cleanup_animation(Ref<Animation> p_animation) {
|
|
|
void AnimationTrackEditor::_view_group_toggle() {
|
|
|
|
|
|
_update_tracks();
|
|
|
- view_group->set_icon(get_icon(view_group->is_pressed() ? "AnimationTrackList" : "AnimationTrackGroup", "EditorIcons"));
|
|
|
+ view_group->set_icon(get_theme_icon(view_group->is_pressed() ? "AnimationTrackList" : "AnimationTrackGroup", "EditorIcons"));
|
|
|
}
|
|
|
|
|
|
bool AnimationTrackEditor::is_grouping_tracks() {
|
|
@@ -5763,7 +5768,7 @@ AnimationTrackEditor::AnimationTrackEditor() {
|
|
|
timeline_scroll->add_child(timeline_vbox);
|
|
|
timeline_vbox->set_v_size_flags(SIZE_EXPAND_FILL);
|
|
|
timeline_vbox->set_h_size_flags(SIZE_EXPAND_FILL);
|
|
|
- timeline_vbox->add_constant_override("separation", 0);
|
|
|
+ timeline_vbox->add_theme_constant_override("separation", 0);
|
|
|
|
|
|
info_message = memnew(Label);
|
|
|
info_message->set_text(TTR("Select an AnimationPlayer node to create and edit animations."));
|
|
@@ -5814,7 +5819,7 @@ AnimationTrackEditor::AnimationTrackEditor() {
|
|
|
track_vbox->set_h_size_flags(SIZE_EXPAND_FILL);
|
|
|
scroll->set_enable_h_scroll(false);
|
|
|
scroll->set_enable_v_scroll(true);
|
|
|
- track_vbox->add_constant_override("separation", 0);
|
|
|
+ track_vbox->add_theme_constant_override("separation", 0);
|
|
|
|
|
|
HBoxContainer *bottom_hb = memnew(HBoxContainer);
|
|
|
add_child(bottom_hb);
|