mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-12 09:17:52 -06:00
Keep instance mode selection when at least one instance is already selected
This commit is contained in:
parent
7d488e3424
commit
28ec3415eb
1 changed files with 9 additions and 4 deletions
|
@ -108,18 +108,23 @@ void Selection::add(unsigned int volume_idx, bool as_single_selection)
|
||||||
if (is_wipe_tower() && volume->is_wipe_tower)
|
if (is_wipe_tower() && volume->is_wipe_tower)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
bool keep_instance_mode = (m_mode == Instance) && !as_single_selection && (is_single_full_instance() || is_multiple_full_instance());
|
||||||
|
|
||||||
// resets the current list if needed
|
// resets the current list if needed
|
||||||
bool needs_reset = as_single_selection;
|
bool needs_reset = as_single_selection;
|
||||||
needs_reset |= volume->is_wipe_tower;
|
needs_reset |= volume->is_wipe_tower;
|
||||||
needs_reset |= is_wipe_tower() && !volume->is_wipe_tower;
|
needs_reset |= is_wipe_tower() && !volume->is_wipe_tower;
|
||||||
needs_reset |= !is_modifier() && volume->is_modifier;
|
needs_reset |= !keep_instance_mode && !is_modifier() && volume->is_modifier;
|
||||||
needs_reset |= is_modifier() && !volume->is_modifier;
|
needs_reset |= is_modifier() && !volume->is_modifier;
|
||||||
|
|
||||||
if (needs_reset)
|
if (needs_reset)
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
if (!contains_volume(volume_idx))
|
if (!contains_volume(volume_idx))
|
||||||
|
{
|
||||||
|
if (!keep_instance_mode)
|
||||||
m_mode = volume->is_modifier ? Volume : Instance;
|
m_mode = volume->is_modifier ? Volume : Instance;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
// keep current mode
|
// keep current mode
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue