diff options
author | JFonS <JFonS@users.noreply.github.com> | 2022-02-11 10:59:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-11 10:59:18 +0100 |
commit | 3aa7b7eaf2c24cc3e91d6a4155c0d6bdce88d91b (patch) | |
tree | f6568770017f855277f53bc53fac46a8c776bca9 /editor | |
parent | 2921cf6a990ec827205829afcc16815e1531ef24 (diff) | |
parent | 3c4c73b1005ccb975e3398aa95ed42e52d95f658 (diff) |
Merge pull request #57919 from mbrlabs/region-select-fixes
Fixed issues with 3D region-select in the editor
Diffstat (limited to 'editor')
-rw-r--r-- | editor/plugins/node_3d_editor_plugin.cpp | 27 | ||||
-rw-r--r-- | editor/plugins/node_3d_editor_plugin.h | 1 |
2 files changed, 17 insertions, 11 deletions
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 9884c45916..5f58724594 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -1594,9 +1594,9 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) { } if (after != EditorPlugin::AFTER_GUI_INPUT_DESELECT) { - clicked = _select_ray(b->get_position()); - //clicking is always deferred to either move or release + clicked = _select_ray(b->get_position()); + selection_in_progress = true; if (clicked.is_null()) { //default to regionselect @@ -1615,6 +1615,8 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) { } if (after != EditorPlugin::AFTER_GUI_INPUT_DESELECT) { + selection_in_progress = false; + if (clicked.is_valid()) { _select_clicked(false); } @@ -1719,17 +1721,14 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) { nav_mode = NAVIGATION_ORBIT; } else { const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE; - if (clicked.is_valid() && movement_threshold_passed) { - _compute_edit(_edit.original_mouse_pos); - clicked = ObjectID(); - - _edit.mode = TRANSFORM_TRANSLATE; - } // enable region-select if nothing has been selected yet or multi-select (shift key) is active - if (movement_threshold_passed && (get_selected_count() == 0 || clicked_wants_append)) { - cursor.region_select = true; - cursor.region_begin = _edit.original_mouse_pos; + if (selection_in_progress && movement_threshold_passed) { + if (get_selected_count() == 0 || clicked_wants_append) { + cursor.region_select = true; + cursor.region_begin = _edit.original_mouse_pos; + clicked = ObjectID(); + } } if (cursor.region_select) { @@ -1738,6 +1737,12 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) { return; } + if (clicked.is_valid() && movement_threshold_passed) { + _compute_edit(_edit.original_mouse_pos); + clicked = ObjectID(); + _edit.mode = TRANSFORM_TRANSLATE; + } + if (_edit.mode == TRANSFORM_NONE) { return; } diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h index cb7c5a714b..333702fd94 100644 --- a/editor/plugins/node_3d_editor_plugin.h +++ b/editor/plugins/node_3d_editor_plugin.h @@ -269,6 +269,7 @@ private: ObjectID clicked; Vector<_RayResult> selection_results; bool clicked_wants_append; + bool selection_in_progress = false; PopupMenu *selection_menu; |