Implement a more coherent (and way less hack) way to block animation updates, fixes #24618
This commit is contained in:
parent
ae886a6f32
commit
8b4c4d9b2f
|
@ -239,6 +239,10 @@ void UndoRedo::_pop_history_tail() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UndoRedo::is_commiting_action() const {
|
||||||
|
return commiting > 0;
|
||||||
|
}
|
||||||
|
|
||||||
void UndoRedo::commit_action() {
|
void UndoRedo::commit_action() {
|
||||||
|
|
||||||
ERR_FAIL_COND(action_level <= 0);
|
ERR_FAIL_COND(action_level <= 0);
|
||||||
|
@ -321,10 +325,13 @@ bool UndoRedo::redo() {
|
||||||
|
|
||||||
if ((current_action + 1) >= actions.size())
|
if ((current_action + 1) >= actions.size())
|
||||||
return false; //nothing to redo
|
return false; //nothing to redo
|
||||||
|
|
||||||
|
commiting++;
|
||||||
current_action++;
|
current_action++;
|
||||||
|
|
||||||
_process_operation_list(actions.write[current_action].do_ops.front());
|
_process_operation_list(actions.write[current_action].do_ops.front());
|
||||||
version++;
|
version++;
|
||||||
|
commiting--;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -334,10 +341,11 @@ bool UndoRedo::undo() {
|
||||||
ERR_FAIL_COND_V(action_level > 0, false);
|
ERR_FAIL_COND_V(action_level > 0, false);
|
||||||
if (current_action < 0)
|
if (current_action < 0)
|
||||||
return false; //nothing to redo
|
return false; //nothing to redo
|
||||||
|
commiting++;
|
||||||
_process_operation_list(actions.write[current_action].undo_ops.front());
|
_process_operation_list(actions.write[current_action].undo_ops.front());
|
||||||
current_action--;
|
current_action--;
|
||||||
version--;
|
version--;
|
||||||
|
commiting--;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,6 +394,7 @@ void UndoRedo::set_property_notify_callback(PropertyNotifyCallback p_property_ca
|
||||||
|
|
||||||
UndoRedo::UndoRedo() {
|
UndoRedo::UndoRedo() {
|
||||||
|
|
||||||
|
commiting = 0;
|
||||||
version = 1;
|
version = 1;
|
||||||
action_level = 0;
|
action_level = 0;
|
||||||
current_action = -1;
|
current_action = -1;
|
||||||
|
@ -484,6 +493,7 @@ void UndoRedo::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("create_action", "name", "merge_mode"), &UndoRedo::create_action, DEFVAL(MERGE_DISABLE));
|
ClassDB::bind_method(D_METHOD("create_action", "name", "merge_mode"), &UndoRedo::create_action, DEFVAL(MERGE_DISABLE));
|
||||||
ClassDB::bind_method(D_METHOD("commit_action"), &UndoRedo::commit_action);
|
ClassDB::bind_method(D_METHOD("commit_action"), &UndoRedo::commit_action);
|
||||||
|
ClassDB::bind_method(D_METHOD("is_commiting_action"), &UndoRedo::is_commiting_action);
|
||||||
|
|
||||||
//ClassDB::bind_method(D_METHOD("add_do_method","p_object", "p_method", "VARIANT_ARG_LIST"),&UndoRedo::add_do_method);
|
//ClassDB::bind_method(D_METHOD("add_do_method","p_object", "p_method", "VARIANT_ARG_LIST"),&UndoRedo::add_do_method);
|
||||||
//ClassDB::bind_method(D_METHOD("add_undo_method","p_object", "p_method", "VARIANT_ARG_LIST"),&UndoRedo::add_undo_method);
|
//ClassDB::bind_method(D_METHOD("add_undo_method","p_object", "p_method", "VARIANT_ARG_LIST"),&UndoRedo::add_undo_method);
|
||||||
|
|
|
@ -94,6 +94,8 @@ private:
|
||||||
MethodNotifyCallback method_callback;
|
MethodNotifyCallback method_callback;
|
||||||
PropertyNotifyCallback property_callback;
|
PropertyNotifyCallback property_callback;
|
||||||
|
|
||||||
|
int commiting;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
|
@ -107,6 +109,7 @@ public:
|
||||||
void add_do_reference(Object *p_object);
|
void add_do_reference(Object *p_object);
|
||||||
void add_undo_reference(Object *p_object);
|
void add_undo_reference(Object *p_object);
|
||||||
|
|
||||||
|
bool is_commiting_action() const;
|
||||||
void commit_action();
|
void commit_action();
|
||||||
|
|
||||||
bool redo();
|
bool redo();
|
||||||
|
|
|
@ -692,12 +692,10 @@ void AnimationTimelineEdit::_anim_length_changed(double p_new_len) {
|
||||||
p_new_len = MAX(0.001, p_new_len);
|
p_new_len = MAX(0.001, p_new_len);
|
||||||
|
|
||||||
editing = true;
|
editing = true;
|
||||||
*block_animation_update_ptr = true;
|
|
||||||
undo_redo->create_action(TTR("Change Animation Length"));
|
undo_redo->create_action(TTR("Change Animation Length"));
|
||||||
undo_redo->add_do_method(animation.ptr(), "set_length", p_new_len);
|
undo_redo->add_do_method(animation.ptr(), "set_length", p_new_len);
|
||||||
undo_redo->add_undo_method(animation.ptr(), "set_length", animation->get_length());
|
undo_redo->add_undo_method(animation.ptr(), "set_length", animation->get_length());
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
*block_animation_update_ptr = false;
|
|
||||||
editing = false;
|
editing = false;
|
||||||
update();
|
update();
|
||||||
|
|
||||||
|
@ -706,12 +704,10 @@ void AnimationTimelineEdit::_anim_length_changed(double p_new_len) {
|
||||||
|
|
||||||
void AnimationTimelineEdit::_anim_loop_pressed() {
|
void AnimationTimelineEdit::_anim_loop_pressed() {
|
||||||
|
|
||||||
*block_animation_update_ptr = true;
|
|
||||||
undo_redo->create_action(TTR("Change Animation Loop"));
|
undo_redo->create_action(TTR("Change Animation Loop"));
|
||||||
undo_redo->add_do_method(animation.ptr(), "set_loop", loop->is_pressed());
|
undo_redo->add_do_method(animation.ptr(), "set_loop", loop->is_pressed());
|
||||||
undo_redo->add_undo_method(animation.ptr(), "set_loop", animation->has_loop());
|
undo_redo->add_undo_method(animation.ptr(), "set_loop", animation->has_loop());
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
*block_animation_update_ptr = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int AnimationTimelineEdit::get_buttons_width() const {
|
int AnimationTimelineEdit::get_buttons_width() const {
|
||||||
|
@ -936,10 +932,6 @@ Size2 AnimationTimelineEdit::get_minimum_size() const {
|
||||||
return ms;
|
return ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimationTimelineEdit::set_block_animation_update_ptr(bool *p_block_ptr) {
|
|
||||||
block_animation_update_ptr = p_block_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AnimationTimelineEdit::set_undo_redo(UndoRedo *p_undo_redo) {
|
void AnimationTimelineEdit::set_undo_redo(UndoRedo *p_undo_redo) {
|
||||||
undo_redo = p_undo_redo;
|
undo_redo = p_undo_redo;
|
||||||
}
|
}
|
||||||
|
@ -1080,7 +1072,6 @@ void AnimationTimelineEdit::_bind_methods() {
|
||||||
|
|
||||||
AnimationTimelineEdit::AnimationTimelineEdit() {
|
AnimationTimelineEdit::AnimationTimelineEdit() {
|
||||||
|
|
||||||
block_animation_update_ptr = NULL;
|
|
||||||
editing = false;
|
editing = false;
|
||||||
name_limit = 150;
|
name_limit = 150;
|
||||||
zoom = NULL;
|
zoom = NULL;
|
||||||
|
@ -1884,12 +1875,10 @@ void AnimationTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
||||||
Point2 pos = mb->get_position();
|
Point2 pos = mb->get_position();
|
||||||
|
|
||||||
if (check_rect.has_point(pos)) {
|
if (check_rect.has_point(pos)) {
|
||||||
*block_animation_update_ptr = true;
|
|
||||||
undo_redo->create_action(TTR("Toggle Track Enabled"));
|
undo_redo->create_action(TTR("Toggle Track Enabled"));
|
||||||
undo_redo->add_do_method(animation.ptr(), "track_set_enabled", track, !animation->track_is_enabled(track));
|
undo_redo->add_do_method(animation.ptr(), "track_set_enabled", track, !animation->track_is_enabled(track));
|
||||||
undo_redo->add_undo_method(animation.ptr(), "track_set_enabled", track, animation->track_is_enabled(track));
|
undo_redo->add_undo_method(animation.ptr(), "track_set_enabled", track, animation->track_is_enabled(track));
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
*block_animation_update_ptr = false;
|
|
||||||
update();
|
update();
|
||||||
accept_event();
|
accept_event();
|
||||||
}
|
}
|
||||||
|
@ -2186,12 +2175,10 @@ void AnimationTrackEdit::_menu_selected(int p_index) {
|
||||||
case MENU_CALL_MODE_CAPTURE: {
|
case MENU_CALL_MODE_CAPTURE: {
|
||||||
|
|
||||||
Animation::UpdateMode update_mode = Animation::UpdateMode(p_index);
|
Animation::UpdateMode update_mode = Animation::UpdateMode(p_index);
|
||||||
*block_animation_update_ptr = true;
|
|
||||||
undo_redo->create_action(TTR("Change Animation Update Mode"));
|
undo_redo->create_action(TTR("Change Animation Update Mode"));
|
||||||
undo_redo->add_do_method(animation.ptr(), "value_track_set_update_mode", track, update_mode);
|
undo_redo->add_do_method(animation.ptr(), "value_track_set_update_mode", track, update_mode);
|
||||||
undo_redo->add_undo_method(animation.ptr(), "value_track_set_update_mode", track, animation->value_track_get_update_mode(track));
|
undo_redo->add_undo_method(animation.ptr(), "value_track_set_update_mode", track, animation->value_track_get_update_mode(track));
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
*block_animation_update_ptr = false;
|
|
||||||
update();
|
update();
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
@ -2200,24 +2187,20 @@ void AnimationTrackEdit::_menu_selected(int p_index) {
|
||||||
case MENU_INTERPOLATION_CUBIC: {
|
case MENU_INTERPOLATION_CUBIC: {
|
||||||
|
|
||||||
Animation::InterpolationType interp_mode = Animation::InterpolationType(p_index - MENU_INTERPOLATION_NEAREST);
|
Animation::InterpolationType interp_mode = Animation::InterpolationType(p_index - MENU_INTERPOLATION_NEAREST);
|
||||||
*block_animation_update_ptr = true;
|
|
||||||
undo_redo->create_action(TTR("Change Animation Interpolation Mode"));
|
undo_redo->create_action(TTR("Change Animation Interpolation Mode"));
|
||||||
undo_redo->add_do_method(animation.ptr(), "track_set_interpolation_type", track, interp_mode);
|
undo_redo->add_do_method(animation.ptr(), "track_set_interpolation_type", track, interp_mode);
|
||||||
undo_redo->add_undo_method(animation.ptr(), "track_set_interpolation_type", track, animation->track_get_interpolation_type(track));
|
undo_redo->add_undo_method(animation.ptr(), "track_set_interpolation_type", track, animation->track_get_interpolation_type(track));
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
*block_animation_update_ptr = false;
|
|
||||||
update();
|
update();
|
||||||
} break;
|
} break;
|
||||||
case MENU_LOOP_WRAP:
|
case MENU_LOOP_WRAP:
|
||||||
case MENU_LOOP_CLAMP: {
|
case MENU_LOOP_CLAMP: {
|
||||||
|
|
||||||
bool loop_wrap = p_index == MENU_LOOP_WRAP;
|
bool loop_wrap = p_index == MENU_LOOP_WRAP;
|
||||||
*block_animation_update_ptr = true;
|
|
||||||
undo_redo->create_action(TTR("Change Animation Loop Mode"));
|
undo_redo->create_action(TTR("Change Animation Loop Mode"));
|
||||||
undo_redo->add_do_method(animation.ptr(), "track_set_interpolation_loop_wrap", track, loop_wrap);
|
undo_redo->add_do_method(animation.ptr(), "track_set_interpolation_loop_wrap", track, loop_wrap);
|
||||||
undo_redo->add_undo_method(animation.ptr(), "track_set_interpolation_loop_wrap", track, animation->track_get_interpolation_loop_wrap(track));
|
undo_redo->add_undo_method(animation.ptr(), "track_set_interpolation_loop_wrap", track, animation->track_get_interpolation_loop_wrap(track));
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
*block_animation_update_ptr = false;
|
|
||||||
update();
|
update();
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
@ -2235,10 +2218,6 @@ void AnimationTrackEdit::_menu_selected(int p_index) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnimationTrackEdit::set_block_animation_update_ptr(bool *p_block_ptr) {
|
|
||||||
block_animation_update_ptr = p_block_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AnimationTrackEdit::cancel_drop() {
|
void AnimationTrackEdit::cancel_drop() {
|
||||||
if (dropping_at != 0) {
|
if (dropping_at != 0) {
|
||||||
dropping_at = 0;
|
dropping_at = 0;
|
||||||
|
@ -2301,7 +2280,6 @@ AnimationTrackEdit::AnimationTrackEdit() {
|
||||||
root = NULL;
|
root = NULL;
|
||||||
path = NULL;
|
path = NULL;
|
||||||
menu = NULL;
|
menu = NULL;
|
||||||
block_animation_update_ptr = NULL;
|
|
||||||
clicking_on_name = false;
|
clicking_on_name = false;
|
||||||
dropping_at = 0;
|
dropping_at = 0;
|
||||||
|
|
||||||
|
@ -3384,7 +3362,6 @@ void AnimationTrackEditor::_update_tracks() {
|
||||||
|
|
||||||
track_edit->set_undo_redo(undo_redo);
|
track_edit->set_undo_redo(undo_redo);
|
||||||
track_edit->set_timeline(timeline);
|
track_edit->set_timeline(timeline);
|
||||||
track_edit->set_block_animation_update_ptr(&block_animation_update);
|
|
||||||
track_edit->set_root(root);
|
track_edit->set_root(root);
|
||||||
track_edit->set_animation_and_track(animation, i);
|
track_edit->set_animation_and_track(animation, i);
|
||||||
track_edit->set_play_position(timeline->get_play_position());
|
track_edit->set_play_position(timeline->get_play_position());
|
||||||
|
@ -3425,7 +3402,7 @@ void AnimationTrackEditor::_animation_changed() {
|
||||||
|
|
||||||
timeline->update();
|
timeline->update();
|
||||||
timeline->update_values();
|
timeline->update_values();
|
||||||
if (block_animation_update) {
|
if (undo_redo->is_commiting_action()) {
|
||||||
for (int i = 0; i < track_edits.size(); i++) {
|
for (int i = 0; i < track_edits.size(); i++) {
|
||||||
track_edits[i]->update();
|
track_edits[i]->update();
|
||||||
}
|
}
|
||||||
|
@ -4075,9 +4052,7 @@ void AnimationTrackEditor::_move_selection_commit() {
|
||||||
undo_redo->add_undo_method(this, "_select_at_anim", animation, E->key().track, oldpos);
|
undo_redo->add_undo_method(this, "_select_at_anim", animation, E->key().track, oldpos);
|
||||||
}
|
}
|
||||||
|
|
||||||
block_animation_update = true; //animation will change and this is triggered from a signal, so block updates
|
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
block_animation_update = false;
|
|
||||||
|
|
||||||
moving_selection = false;
|
moving_selection = false;
|
||||||
for (int i = 0; i < track_edits.size(); i++) {
|
for (int i = 0; i < track_edits.size(); i++) {
|
||||||
|
@ -4778,7 +4753,6 @@ void AnimationTrackEditor::_bind_methods() {
|
||||||
|
|
||||||
AnimationTrackEditor::AnimationTrackEditor() {
|
AnimationTrackEditor::AnimationTrackEditor() {
|
||||||
root = NULL;
|
root = NULL;
|
||||||
block_animation_update = false;
|
|
||||||
|
|
||||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||||
|
|
||||||
|
@ -4796,7 +4770,6 @@ AnimationTrackEditor::AnimationTrackEditor() {
|
||||||
timeline_vbox->add_constant_override("separation", 0);
|
timeline_vbox->add_constant_override("separation", 0);
|
||||||
|
|
||||||
timeline = memnew(AnimationTimelineEdit);
|
timeline = memnew(AnimationTimelineEdit);
|
||||||
timeline->set_block_animation_update_ptr(&block_animation_update);
|
|
||||||
timeline->set_undo_redo(undo_redo);
|
timeline->set_undo_redo(undo_redo);
|
||||||
timeline_vbox->add_child(timeline);
|
timeline_vbox->add_child(timeline);
|
||||||
timeline->connect("timeline_changed", this, "_timeline_changed");
|
timeline->connect("timeline_changed", this, "_timeline_changed");
|
||||||
|
@ -4815,7 +4788,6 @@ AnimationTrackEditor::AnimationTrackEditor() {
|
||||||
|
|
||||||
bezier_edit = memnew(AnimationBezierTrackEdit);
|
bezier_edit = memnew(AnimationBezierTrackEdit);
|
||||||
timeline_vbox->add_child(bezier_edit);
|
timeline_vbox->add_child(bezier_edit);
|
||||||
bezier_edit->set_block_animation_update_ptr(&block_animation_update);
|
|
||||||
bezier_edit->set_undo_redo(undo_redo);
|
bezier_edit->set_undo_redo(undo_redo);
|
||||||
bezier_edit->set_editor(this);
|
bezier_edit->set_editor(this);
|
||||||
bezier_edit->set_timeline(timeline);
|
bezier_edit->set_timeline(timeline);
|
||||||
|
|
|
@ -76,7 +76,6 @@ class AnimationTimelineEdit : public Range {
|
||||||
Rect2 hsize_rect;
|
Rect2 hsize_rect;
|
||||||
|
|
||||||
bool editing;
|
bool editing;
|
||||||
bool *block_animation_update_ptr; //used to block all tracks re-gen (speed up)
|
|
||||||
|
|
||||||
bool panning_timeline;
|
bool panning_timeline;
|
||||||
float panning_timeline_from;
|
float panning_timeline_from;
|
||||||
|
@ -104,7 +103,6 @@ public:
|
||||||
void set_zoom(Range *p_zoom);
|
void set_zoom(Range *p_zoom);
|
||||||
Range *get_zoom() const { return zoom; }
|
Range *get_zoom() const { return zoom; }
|
||||||
void set_undo_redo(UndoRedo *p_undo_redo);
|
void set_undo_redo(UndoRedo *p_undo_redo);
|
||||||
void set_block_animation_update_ptr(bool *p_block_ptr);
|
|
||||||
|
|
||||||
void set_play_position(float p_pos);
|
void set_play_position(float p_pos);
|
||||||
float get_play_position() const;
|
float get_play_position() const;
|
||||||
|
@ -170,8 +168,6 @@ class AnimationTrackEdit : public Control {
|
||||||
|
|
||||||
void _menu_selected(int p_index);
|
void _menu_selected(int p_index);
|
||||||
|
|
||||||
bool *block_animation_update_ptr; //used to block all tracks re-gen (speed up)
|
|
||||||
|
|
||||||
void _path_entered(const String &p_text);
|
void _path_entered(const String &p_text);
|
||||||
void _play_position_draw();
|
void _play_position_draw();
|
||||||
mutable int dropping_at;
|
mutable int dropping_at;
|
||||||
|
@ -216,7 +212,6 @@ public:
|
||||||
AnimationTimelineEdit *get_timeline() const { return timeline; }
|
AnimationTimelineEdit *get_timeline() const { return timeline; }
|
||||||
AnimationTrackEditor *get_editor() const { return editor; }
|
AnimationTrackEditor *get_editor() const { return editor; }
|
||||||
UndoRedo *get_undo_redo() const { return undo_redo; }
|
UndoRedo *get_undo_redo() const { return undo_redo; }
|
||||||
bool *get_block_animation_update_ptr() { return block_animation_update_ptr; }
|
|
||||||
|
|
||||||
void set_animation_and_track(const Ref<Animation> &p_animation, int p_track);
|
void set_animation_and_track(const Ref<Animation> &p_animation, int p_track);
|
||||||
virtual Size2 get_minimum_size() const;
|
virtual Size2 get_minimum_size() const;
|
||||||
|
@ -226,8 +221,6 @@ public:
|
||||||
void set_editor(AnimationTrackEditor *p_editor);
|
void set_editor(AnimationTrackEditor *p_editor);
|
||||||
void set_root(Node *p_root);
|
void set_root(Node *p_root);
|
||||||
|
|
||||||
void set_block_animation_update_ptr(bool *p_block_ptr);
|
|
||||||
|
|
||||||
void set_play_position(float p_pos);
|
void set_play_position(float p_pos);
|
||||||
void update_play_position();
|
void update_play_position();
|
||||||
void cancel_drop();
|
void cancel_drop();
|
||||||
|
@ -313,8 +306,6 @@ class AnimationTrackEditor : public VBoxContainer {
|
||||||
Vector<AnimationTrackEdit *> track_edits;
|
Vector<AnimationTrackEdit *> track_edits;
|
||||||
Vector<AnimationTrackEditGroup *> groups;
|
Vector<AnimationTrackEditGroup *> groups;
|
||||||
|
|
||||||
bool block_animation_update;
|
|
||||||
|
|
||||||
int _get_track_selected();
|
int _get_track_selected();
|
||||||
void _animation_changed();
|
void _animation_changed();
|
||||||
void _update_tracks();
|
void _update_tracks();
|
||||||
|
|
|
@ -1004,12 +1004,10 @@ void AnimationTrackEditTypeAudio::drop_data(const Point2 &p_point, const Variant
|
||||||
ofs += 0.001;
|
ofs += 0.001;
|
||||||
}
|
}
|
||||||
|
|
||||||
*get_block_animation_update_ptr() = true;
|
|
||||||
get_undo_redo()->create_action(TTR("Add Audio Track Clip"));
|
get_undo_redo()->create_action(TTR("Add Audio Track Clip"));
|
||||||
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_insert_key", get_track(), ofs, stream);
|
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_insert_key", get_track(), ofs, stream);
|
||||||
get_undo_redo()->add_undo_method(get_animation().ptr(), "track_remove_key_at_position", get_track(), ofs);
|
get_undo_redo()->add_undo_method(get_animation().ptr(), "track_remove_key_at_position", get_track(), ofs);
|
||||||
get_undo_redo()->commit_action();
|
get_undo_redo()->commit_action();
|
||||||
*get_block_animation_update_ptr() = false;
|
|
||||||
|
|
||||||
update();
|
update();
|
||||||
return;
|
return;
|
||||||
|
@ -1098,21 +1096,17 @@ void AnimationTrackEditTypeAudio::_gui_input(const Ref<InputEvent> &p_event) {
|
||||||
float ofs_local = -len_resizing_rel / get_timeline()->get_zoom_scale();
|
float ofs_local = -len_resizing_rel / get_timeline()->get_zoom_scale();
|
||||||
if (len_resizing_start) {
|
if (len_resizing_start) {
|
||||||
float prev_ofs = get_animation()->audio_track_get_key_start_offset(get_track(), len_resizing_index);
|
float prev_ofs = get_animation()->audio_track_get_key_start_offset(get_track(), len_resizing_index);
|
||||||
*get_block_animation_update_ptr() = true;
|
|
||||||
get_undo_redo()->create_action(TTR("Change Audio Track Clip Start Offset"));
|
get_undo_redo()->create_action(TTR("Change Audio Track Clip Start Offset"));
|
||||||
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
||||||
get_undo_redo()->add_undo_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs);
|
get_undo_redo()->add_undo_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs);
|
||||||
get_undo_redo()->commit_action();
|
get_undo_redo()->commit_action();
|
||||||
*get_block_animation_update_ptr() = false;
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
float prev_ofs = get_animation()->audio_track_get_key_end_offset(get_track(), len_resizing_index);
|
float prev_ofs = get_animation()->audio_track_get_key_end_offset(get_track(), len_resizing_index);
|
||||||
*get_block_animation_update_ptr() = true;
|
|
||||||
get_undo_redo()->create_action(TTR("Change Audio Track Clip End Offset"));
|
get_undo_redo()->create_action(TTR("Change Audio Track Clip End Offset"));
|
||||||
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
||||||
get_undo_redo()->add_undo_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs);
|
get_undo_redo()->add_undo_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs);
|
||||||
get_undo_redo()->commit_action();
|
get_undo_redo()->commit_action();
|
||||||
*get_block_animation_update_ptr() = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
len_resizing = false;
|
len_resizing = false;
|
||||||
|
|
|
@ -308,7 +308,6 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
switch (uMsg) // Check For Windows Messages
|
switch (uMsg) // Check For Windows Messages
|
||||||
{
|
{
|
||||||
case WM_SETFOCUS: {
|
case WM_SETFOCUS: {
|
||||||
|
@ -3004,9 +3003,9 @@ bool OS_Windows::is_disable_crash_handler() const {
|
||||||
|
|
||||||
void OS_Windows::process_and_drop_events() {
|
void OS_Windows::process_and_drop_events() {
|
||||||
|
|
||||||
drop_events=true;
|
drop_events = true;
|
||||||
process_events();
|
process_events();
|
||||||
drop_events=false;
|
drop_events = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Error OS_Windows::move_to_trash(const String &p_path) {
|
Error OS_Windows::move_to_trash(const String &p_path) {
|
||||||
|
|
Loading…
Reference in New Issue