mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-15 16: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)
|
maximizing window. E.g. restoring window state at startup. (issue #129)
|
||||||
- InternalFrame: Title pane height was too small when iconify, maximize and close
|
- InternalFrame: Title pane height was too small when iconify, maximize and close
|
||||||
buttons are hidden. (issue #132)
|
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
|
## 0.38
|
||||||
|
|||||||
@@ -200,6 +200,14 @@ public interface FlatClientProperties
|
|||||||
*/
|
*/
|
||||||
String SCROLL_BAR_SHOW_BUTTONS = "JScrollBar.showButtons";
|
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.
|
* Specifies whether separators are shown between tabs.
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -114,10 +114,7 @@ public class FlatScrollPaneUI
|
|||||||
return new BasicScrollPaneUI.MouseWheelHandler() {
|
return new BasicScrollPaneUI.MouseWheelHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseWheelMoved( MouseWheelEvent e ) {
|
public void mouseWheelMoved( MouseWheelEvent e ) {
|
||||||
// Note: Getting UI value "ScrollPane.smoothScrolling" here to allow
|
if( isSmoothScrollingEnabled() &&
|
||||||
// applications to turn smooth scrolling on or off at any time
|
|
||||||
// (e.g. in application options dialog).
|
|
||||||
if( UIManager.getBoolean( "ScrollPane.smoothScrolling" ) &&
|
|
||||||
scrollpane.isWheelScrollingEnabled() &&
|
scrollpane.isWheelScrollingEnabled() &&
|
||||||
e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL &&
|
e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL &&
|
||||||
e.getPreciseWheelRotation() != 0 &&
|
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 static final double EPSILON = 1e-5d;
|
||||||
|
|
||||||
private void mouseWheelMovedSmooth( MouseWheelEvent e ) {
|
private void mouseWheelMovedSmooth( MouseWheelEvent e ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user