Skip to content

Commit 5b336f9

Browse files
committed
Bvv: Fix scene "reseting" on toggling slab view
1 parent af1d746 commit 5b336f9

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

  • src/main/java/sc/fiji/snt/viewer

‎src/main/java/sc/fiji/snt/viewer/Bvv.java‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2400,6 +2400,9 @@ public void actionPerformed(final java.awt.event.ActionEvent e) {
24002400

24012401
final int[] savedClip = {nearSlider.getValue(), farSlider.getValue()};
24022402
final boolean[] slabOn = {false};
2403+
// Guards posSlider.setValue() calls that are programmatic (not from the user
2404+
// dragging the slider), so slabListener does not fire a second applySlab().
2405+
final boolean[] updatingSlab = {false};
24032406

24042407
final VolumeViewerPanel viewerPanel = bvvInstance.currentBvv.getViewer();
24052408

@@ -2522,7 +2525,9 @@ public void mousePressed(final java.awt.event.MouseEvent e) {
25222525
cur.get(2, 0) * cur.get(2, 0));
25232526
if (curScale > 0) {
25242527
final int sliderPos = (int) Math.round(-cur.get(2, 3) / (curScale * zStep));
2528+
updatingSlab[0] = true;
25252529
posSlider.setValue(Math.max(0, Math.min(nSlices, sliderPos)));
2530+
updatingSlab[0] = false;
25262531
}
25272532
final double zCenter = posSlider.getValue() * zStep;
25282533
final double halfThick = ((Number) thickSpinner.getValue()).doubleValue() / 2.0;
@@ -2551,7 +2556,7 @@ public void mousePressed(final java.awt.event.MouseEvent e) {
25512556
});
25522557

25532558
final javax.swing.event.ChangeListener slabListener = ev -> {
2554-
if (slabOn[0]) {
2559+
if (slabOn[0] && !updatingSlab[0]) {
25552560
final double zCenter = posSlider.getValue() * zStep;
25562561
final double halfThick = ((Number) thickSpinner.getValue()).doubleValue() / 2.0;
25572562
applySlab(viewerPanel, physZ, zCenter, halfThick * 2.0);

0 commit comments

Comments
 (0)