mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-11 06:27:13 -06:00
ScrollPane: support disabling smooth scrolling per component via client property "JScrollPane.smoothScrolling"
This commit is contained in:
@@ -8,6 +8,8 @@ FlatLaf Change Log
|
||||
maximizing window. E.g. restoring window state at startup. (issue #129)
|
||||
- InternalFrame: Title pane height was too small when iconify, maximize and close
|
||||
buttons are hidden. (issue #132)
|
||||
- ScrollPane: Enable/disable smooth scrolling per component if client property
|
||||
"JScrollPane.smoothScrolling" is set to a `Boolean` on `JScrollPane`.
|
||||
|
||||
|
||||
## 0.38
|
||||
|
||||
@@ -200,6 +200,14 @@ public interface FlatClientProperties
|
||||
*/
|
||||
String SCROLL_BAR_SHOW_BUTTONS = "JScrollBar.showButtons";
|
||||
|
||||
/**
|
||||
* Specifies whether the scroll pane uses smooth scrolling.
|
||||
* <p>
|
||||
* <strong>Component</strong> {{@link javax.swing.JScrollPane}<br>
|
||||
* <strong>Value type</strong> {@link java.lang.Boolean}
|
||||
*/
|
||||
String SCROLL_PANE_SMOOTH_SCROLLING = "JScrollPane.smoothScrolling";
|
||||
|
||||
/**
|
||||
* Specifies whether separators are shown between tabs.
|
||||
* <p>
|
||||
|
||||
@@ -114,10 +114,7 @@ public class FlatScrollPaneUI
|
||||
return new BasicScrollPaneUI.MouseWheelHandler() {
|
||||
@Override
|
||||
public void mouseWheelMoved( MouseWheelEvent e ) {
|
||||
// Note: Getting UI value "ScrollPane.smoothScrolling" here to allow
|
||||
// applications to turn smooth scrolling on or off at any time
|
||||
// (e.g. in application options dialog).
|
||||
if( UIManager.getBoolean( "ScrollPane.smoothScrolling" ) &&
|
||||
if( isSmoothScrollingEnabled() &&
|
||||
scrollpane.isWheelScrollingEnabled() &&
|
||||
e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL &&
|
||||
e.getPreciseWheelRotation() != 0 &&
|
||||
@@ -130,6 +127,17 @@ public class FlatScrollPaneUI
|
||||
};
|
||||
}
|
||||
|
||||
protected boolean isSmoothScrollingEnabled() {
|
||||
Object smoothScrolling = scrollpane.getClientProperty( FlatClientProperties.SCROLL_PANE_SMOOTH_SCROLLING );
|
||||
if( smoothScrolling instanceof Boolean )
|
||||
return (Boolean) smoothScrolling;
|
||||
|
||||
// Note: Getting UI value "ScrollPane.smoothScrolling" here to allow
|
||||
// applications to turn smooth scrolling on or off at any time
|
||||
// (e.g. in application options dialog).
|
||||
return UIManager.getBoolean( "ScrollPane.smoothScrolling" );
|
||||
}
|
||||
|
||||
private static final double EPSILON = 1e-5d;
|
||||
|
||||
private void mouseWheelMovedSmooth( MouseWheelEvent e ) {
|
||||
|
||||
Reference in New Issue
Block a user