diff options
author | bubnikv <bubnikv@gmail.com> | 2017-06-21 15:10:22 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2017-06-21 15:10:22 +0300 |
commit | b12e4689e8030bf89e0759e69ce8257649316157 (patch) | |
tree | 50ae9af00f2fe4bf9f703aedec12c1f4db8fd527 | |
parent | 7ca02bda0f7ab911a97e435475e05f1b113246d1 (diff) |
Fix of changing the order of volumes of a multi-volume part:
The 3D preview scene was not updated properly.
-rw-r--r-- | lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm | 2 | ||||
-rw-r--r-- | xs/xsp/GUI_3DScene.xsp | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm b/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm index 42836fb3c..a3aaae400 100644 --- a/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm +++ b/lib/Slic3r/GUI/Plater/ObjectPartsPanel.pm @@ -421,6 +421,7 @@ sub on_btn_move_up { if ($itemData && $itemData->{type} eq 'volume') { my $volume_id = $itemData->{volume_id}; if ($self->{model_object}->move_volume_up($volume_id)) { + $self->{canvas}->volumes->move_volume_up($volume_id); $self->{parts_changed} = 1; $self->reload_tree($volume_id - 1); } @@ -433,6 +434,7 @@ sub on_btn_move_down { if ($itemData && $itemData->{type} eq 'volume') { my $volume_id = $itemData->{volume_id}; if ($self->{model_object}->move_volume_down($volume_id)) { + $self->{canvas}->volumes->move_volume_down($volume_id); $self->{parts_changed} = 1; $self->reload_tree($volume_id + 1); } diff --git a/xs/xsp/GUI_3DScene.xsp b/xs/xsp/GUI_3DScene.xsp index 29fa30115..2a963b16a 100644 --- a/xs/xsp/GUI_3DScene.xsp +++ b/xs/xsp/GUI_3DScene.xsp @@ -90,6 +90,24 @@ void render_legacy() const; void finalize_geometry(bool use_VBOs); void release_geometry(); + + bool move_volume_up(int idx) + %code%{ + if (idx > 0 && idx < int(THIS->volumes.size())) { + std::swap(THIS->volumes[idx-1], THIS->volumes[idx]); + RETVAL = true; + } else + RETVAL = false; + %}; + bool move_volume_down(int idx) + %code%{ + if (idx >= 0 && idx + 1 < int(THIS->volumes.size())) { + std::swap(THIS->volumes[idx+1], THIS->volumes[idx]); + RETVAL = true; + } else + RETVAL = false; + %}; + %{ SV* |