Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEnrico Turri <enricoturri@seznam.cz>2019-04-09 16:42:00 +0300
committerEnrico Turri <enricoturri@seznam.cz>2019-04-09 16:42:00 +0300
commit0889877e267b737f8ac44eb11624c2896b68a007 (patch)
treeebec53a3d4f3c219826bf730771ed8829407d56c /src/slic3r/GUI/Selection.cpp
parentc17e8602ed32c73364c6e29e16434ae81c8bfcd8 (diff)
Tweaks to selection from 3D scene
Diffstat (limited to 'src/slic3r/GUI/Selection.cpp')
-rw-r--r--src/slic3r/GUI/Selection.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp
index 6f148ca24..dedf55a45 100644
--- a/src/slic3r/GUI/Selection.cpp
+++ b/src/slic3r/GUI/Selection.cpp
@@ -109,19 +109,20 @@ void Selection::add(unsigned int volume_idx, bool as_single_selection)
if (is_wipe_tower() && volume->is_wipe_tower)
return;
- bool keep_instance_mode = (m_mode == Instance) && !as_single_selection && (is_single_full_instance() || is_multiple_full_instance());
+ bool keep_instance_mode = (m_mode == Instance) && !as_single_selection;
+ bool already_contained = contains_volume(volume_idx);
// resets the current list if needed
- bool needs_reset = as_single_selection;
+ bool needs_reset = as_single_selection && !already_contained;
needs_reset |= volume->is_wipe_tower;
needs_reset |= is_wipe_tower() && !volume->is_wipe_tower;
- needs_reset |= !keep_instance_mode && !is_modifier() && volume->is_modifier;
- needs_reset |= is_modifier() && !volume->is_modifier;
+ needs_reset |= as_single_selection && !is_any_modifier() && volume->is_modifier;
+ needs_reset |= is_any_modifier() && !volume->is_modifier;
if (needs_reset)
clear();
- if (!contains_volume(volume_idx))
+ if (!already_contained || needs_reset)
{
if (!keep_instance_mode)
m_mode = volume->is_modifier ? Volume : Instance;