From 94a22ffb38462d35f451542c9cd3139121e00efb Mon Sep 17 00:00:00 2001 From: Skarn Date: Wed, 14 Oct 2020 14:36:07 +0300 Subject: [PATCH] improve multiselection UX --- src/noggit/MapView.cpp | 13 ++++++++----- src/noggit/MapView.h | 2 +- src/noggit/ui/ObjectEditor.h | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/noggit/MapView.cpp b/src/noggit/MapView.cpp index 40ae05be..64873ef6 100644 --- a/src/noggit/MapView.cpp +++ b/src/noggit/MapView.cpp @@ -2237,7 +2237,7 @@ selection_result MapView::intersect_result(bool terrain_only) return results; } -void MapView::doSelection (bool selectTerrainOnly) +void MapView::doSelection (bool selectTerrainOnly, bool mouseMove) { selection_result results(intersect_result(selectTerrainOnly)); @@ -2257,7 +2257,7 @@ void MapView::doSelection (bool selectTerrainOnly) { _world->add_to_selection(hit); } - else + else if (!mouseMove) { _world->remove_from_selection(hit); } @@ -2275,7 +2275,7 @@ void MapView::doSelection (bool selectTerrainOnly) _world->range_add_to_selection(_cursor_pos, objectEditor->brushRadius(), true); } } - else + else if (!_mod_space_down && !_mod_alt_down) { _world->reset_selection(); _world->add_to_selection(hit); @@ -2774,7 +2774,7 @@ void MapView::mouseMoveEvent (QMouseEvent* event) { if (terrainMode == editing_mode::object) { - doSelection(false); // Required for radius selection in Object mode + doSelection(false, true); // Required for radius selection in Object mode } } @@ -2854,7 +2854,10 @@ void MapView::mousePressEvent(QMouseEvent* event) if (leftMouse) { - doSelection(false); + if (!(terrainMode == editing_mode::mccv && _mod_ctrl_down)) + { + doSelection(false); + } } else if (rightMouse) { diff --git a/src/noggit/MapView.h b/src/noggit/MapView.h index 735fafdd..6c483970 100644 --- a/src/noggit/MapView.h +++ b/src/noggit/MapView.h @@ -101,7 +101,7 @@ private: math::ray intersect_ray() const; selection_result intersect_result(bool terrain_only); - void doSelection(bool selectTerrainOnly); + void doSelection(bool selectTerrainOnly, bool mouseMove = false); void update_cursor_pos(); display_mode _display_mode; diff --git a/src/noggit/ui/ObjectEditor.h b/src/noggit/ui/ObjectEditor.h index cbbf3c59..e21a4208 100644 --- a/src/noggit/ui/ObjectEditor.h +++ b/src/noggit/ui/ObjectEditor.h @@ -84,7 +84,7 @@ namespace noggit QSize sizeHint() const override; private: - float _radius = 15.0f; + float _radius = 0.01f; QSlider* _radius_slider; QDoubleSpinBox* _radius_spin;