mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-06 14:00:55 +03:00
ScrollBar: fixed jittery scrolling when in repeating mode (hold down mouse button) and smooth scrolling enabled
This commit is contained in:
@@ -477,13 +477,13 @@ public class FlatScrollBarUI
|
||||
if( useValueIsAdjusting )
|
||||
scrollbar.setValueIsAdjusting( true );
|
||||
|
||||
int oldValue = scrollbar.getValue();
|
||||
|
||||
// if invoked while animation is running, calculation of new value
|
||||
// should start at the previous target value
|
||||
if( targetValue != Integer.MIN_VALUE )
|
||||
scrollbar.setValue( targetValue );
|
||||
|
||||
int oldValue = scrollbar.getValue();
|
||||
|
||||
r.run();
|
||||
|
||||
// do not use animation if started dragging thumb
|
||||
|
||||
@@ -558,11 +558,20 @@ public class FlatSmoothScrollingTest
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* One or two values between two equal values are considered "temporary",
|
||||
* which means that they are the target value for the following scroll animation.
|
||||
*/
|
||||
private boolean isTemporaryValue( List<Data> chartData, int i ) {
|
||||
if( i == 0 || i == chartData.size() - 1 )
|
||||
return false;
|
||||
|
||||
return chartData.get( i - 1 ).value == chartData.get( i + 1 ).value;
|
||||
double valueBefore = chartData.get( i - 1 ).value;
|
||||
double valueAfter = chartData.get( i + 1 ).value;
|
||||
|
||||
return valueBefore == valueAfter ||
|
||||
(i < chartData.size() - 2 && valueBefore == chartData.get( i + 2 ).value) ||
|
||||
(i > 1 && chartData.get( i - 2 ).value == valueAfter);
|
||||
}
|
||||
|
||||
private int chartWidth() {
|
||||
|
||||
Reference in New Issue
Block a user