From 47e24dd1ee981e2f582cd36be5895724d130b803 Mon Sep 17 00:00:00 2001 From: Chaosus Date: Wed, 19 Jun 2019 13:34:22 +0300 Subject: [PATCH] Fix animation keys selection with SHIFT/CTRL --- editor/animation_track_editor.cpp | 15 ++++++++------- editor/animation_track_editor.h | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 3295753bdac..67e42dfb8ca 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -2083,8 +2083,6 @@ void AnimationTrackEdit::_gui_input(const Ref &p_event) { moving_selection_from_ofs = (mb->get_position().x - timeline->get_name_limit()) / timeline->get_zoom_scale(); } accept_event(); - } else { - emit_signal("clear_selection"); } } @@ -2326,7 +2324,7 @@ void AnimationTrackEdit::set_in_group(bool p_enable) { update(); } -void AnimationTrackEdit::append_to_selection(const Rect2 &p_box) { +void AnimationTrackEdit::append_to_selection(const Rect2 &p_box, bool p_deselection) { Rect2 select_rect(timeline->get_name_limit(), 0, get_size().width - timeline->get_name_limit() - timeline->get_buttons_width(), get_size().height); select_rect = select_rect.clip(p_box); @@ -2339,7 +2337,10 @@ void AnimationTrackEdit::append_to_selection(const Rect2 &p_box) { rect.position.x += offset; if (select_rect.intersects(rect)) { - emit_signal("select_key", i, false); + if (p_deselection) + emit_signal("deselect_key", i); + else + emit_signal("select_key", i, false); } } } @@ -4342,7 +4343,7 @@ void AnimationTrackEditor::_scroll_input(const Ref &p_event) { Rect2 local_rect = box_select_rect; local_rect.position -= track_edits[i]->get_global_position(); - track_edits[i]->append_to_selection(local_rect); + track_edits[i]->append_to_selection(local_rect, mb->get_command()); } if (_get_track_selected() == -1 && track_edits.size() > 0) { //minimal hack to make shortcuts work @@ -4374,8 +4375,8 @@ void AnimationTrackEditor::_scroll_input(const Ref &p_event) { } if (!box_selection->is_visible_in_tree()) { - if (!mm->get_shift()) { - _clear_selection(); //only append if shift is pressed + if (!mm->get_command() && !mm->get_shift()) { + _clear_selection(); } box_selection->show(); } diff --git a/editor/animation_track_editor.h b/editor/animation_track_editor.h index c64f663b3b1..54e0675ab7c 100644 --- a/editor/animation_track_editor.h +++ b/editor/animation_track_editor.h @@ -231,7 +231,7 @@ public: void cancel_drop(); void set_in_group(bool p_enable); - void append_to_selection(const Rect2 &p_box); + void append_to_selection(const Rect2 &p_box, bool p_deselection); AnimationTrackEdit(); };