Skip to content

Commit 940d5be

Browse files
hansonrhansonr
authored andcommitted
JScrollbar/JSlider fix for UI/class notification infinite loop
1 parent ec61093 commit 940d5be

File tree

9 files changed

+30
-15
lines changed

9 files changed

+30
-15
lines changed
-326 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20181118005502
1+
20181119153133
-326 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20181118005502
1+
20181119153133
-326 Bytes
Binary file not shown.

sources/net.sf.j2s.java.core/src/javax/swing/Timer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ private ArrayList<Object> timerQueue() {
555555
public void restart() {
556556
// getLock().lock();
557557
// try {
558-
// stop();
558+
stop();
559559
start();
560560
// } finally {
561561
// getLock().unlock();

sources/net.sf.j2s.java.core/src/swingjs/jquery/jquery-ui-j2sslider.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,6 @@
250250
return false;
251251
}
252252

253-
this.elementOffset = this.element.offset();
254-
255253
var position = this._getPosition(event);
256254

257255
index = event.target.index;
@@ -620,12 +618,13 @@
620618
},
621619

622620
_getPixelMouse : function(position, offsetHandle) {
621+
var offset = this.element.offset;
623622
var p = (this.orientation === "horizontal" ?
624623
position.x
625-
- this.elementOffset.left
624+
- offset.left
626625
- (this._clickOffset ? this._clickOffset.left : 0)
627626
: position.y
628-
- this.elementOffset.top
627+
- offset.top
629628
- (this._clickOffset ? this._clickOffset.top : 0));
630629
return p - this.handleSize / 2;
631630
},

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSScrollBarUI.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public class JSScrollBarUI extends JSSliderUI {
2424

2525
private boolean isInvisible;
2626

27+
private boolean isAdjusting;
28+
2729
public JSScrollBarUI() {
2830
super();
2931
isScrollBar = true;
@@ -38,10 +40,14 @@ public void propertyChange(PropertyChangeEvent e) {
3840

3941
@Override
4042
public void stateChanged(ChangeEvent e) {
41-
super.stateChanged(e);
42-
setScrollBarExtentAndCSS();
43-
if (debugging)
44-
System.out.println(id + " stateChange " + dumpEvent(e));
43+
if (!isAdjusting) {
44+
isAdjusting = true;
45+
super.stateChanged(e);
46+
setScrollBarExtentAndCSS();
47+
isAdjusting = false;
48+
if (debugging)
49+
System.out.println(id + " stateChange " + dumpEvent(e));
50+
}
4551
}
4652

4753

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSScrollPaneUI.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,6 +1161,8 @@ class Handler implements ChangeListener, PropertyChangeListener {// ,
11611161
// }
11621162
// }
11631163

1164+
private boolean isAdjusting;
1165+
11641166
//
11651167
// ChangeListener: This is added to the vieport, and hsb/vsb models.
11661168
//
@@ -1189,8 +1191,12 @@ private void vsbStateChanged(JViewport viewport, ChangeEvent e) {
11891191
BoundedRangeModel model = (BoundedRangeModel) (e.getSource());
11901192
Point p = viewport.getViewPosition();
11911193
p.y = model.getValue();
1192-
viewport.setViewPosition(p);
1193-
scrollpane.getVerticalScrollBar().setVisibleAmount(viewport.getHeight());
1194+
if (!isAdjusting) {
1195+
isAdjusting = true;
1196+
viewport.setViewPosition(p);
1197+
scrollpane.getVerticalScrollBar().setVisibleAmount(viewport.getHeight());
1198+
isAdjusting = false;
1199+
}
11941200
}
11951201

11961202
private void hsbStateChanged(JViewport viewport, ChangeEvent e) {
@@ -1225,8 +1231,12 @@ private void hsbStateChanged(JViewport viewport, ChangeEvent e) {
12251231
}
12261232
}
12271233
}
1228-
scrollpane.getHorizontalScrollBar().setVisibleAmount(viewport.getWidth());
1229-
viewport.setViewPosition(p);
1234+
if (!isAdjusting) {
1235+
isAdjusting = true;
1236+
viewport.setViewPosition(p);
1237+
scrollpane.getHorizontalScrollBar().setVisibleAmount(viewport.getWidth());
1238+
isAdjusting = false;
1239+
}
12301240
}
12311241

12321242
private void viewportStateChanged(ChangeEvent e) {

0 commit comments

Comments
 (0)