diff options
-rw-r--r-- | support/inkscape/inkscape.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/support/inkscape/inkscape.py b/support/inkscape/inkscape.py index d395992..21634d2 100644 --- a/support/inkscape/inkscape.py +++ b/support/inkscape/inkscape.py @@ -78,15 +78,20 @@ class InkscapeCommandLine(object): target_index = self._layers.index(layer) - while True: - if self._current_layer_index < target_index: + if self._current_layer_index < target_index: + for _ in range(target_index - self._current_layer_index): self.apply_to_document('LayerMoveToNext' if with_selection else 'LayerNext') - self._current_layer_index += 1 - elif self._current_layer_index > target_index: + elif self._current_layer_index > target_index: + for _ in range(self._current_layer_index - target_index): self.apply_to_document('LayerMoveToPrev' if with_selection else 'LayerPrev') - self._current_layer_index -= 1 - else: - break + else: + return + + if with_selection: + # When using LayerMoveToNext and LayerMoveToPrev, inkscape does not reliably select the next/previous layer. + self._current_layer_index = None + else: + self._current_layer_index = target_index def duplicate_layer(self, layer): self.apply_to_layer(layer, 'LayerDuplicate') |