Skip to content

Commit 5a0e71b

Browse files
Robert Lichtenbergerarapte
Robert Lichtenberger
authored andcommitted
8237372: NullPointerException in TabPaneSkin.stopDrag
Reviewed-by: arapte
1 parent 79fc0d0 commit 5a0e71b

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

modules/javafx.controls/src/main/java/javafx/scene/control/skin/TabPaneSkin.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -2210,17 +2210,17 @@ private void stopDrag() {
22102210
if (dragState == DragState.START) {
22112211
// No drag action was performed.
22122212
resetDrag();
2213-
return;
2214-
}
2215-
// Animate tab header being dragged to its final position.
2216-
dragHeaderSourceX = dragTabHeader.getLayoutX();
2217-
dragHeaderTransitionX = dragHeaderDestX - dragHeaderSourceX;
2218-
dragHeaderAnim.playFromStart();
2219-
2220-
// Reorder the tab list.
2221-
if (dragHeaderStartX != dragHeaderDestX) {
2222-
((TabObservableList<Tab>) getSkinnable().getTabs()).reorder(dragTabHeader.tab, swapTab);
2223-
swapTab = null;
2213+
} else if (dragState == DragState.REORDER) {
2214+
// Animate tab header being dragged to its final position.
2215+
dragHeaderSourceX = dragTabHeader.getLayoutX();
2216+
dragHeaderTransitionX = dragHeaderDestX - dragHeaderSourceX;
2217+
dragHeaderAnim.playFromStart();
2218+
2219+
// Reorder the tab list.
2220+
if (dragHeaderStartX != dragHeaderDestX) {
2221+
((TabObservableList<Tab>) getSkinnable().getTabs()).reorder(dragTabHeader.tab, swapTab);
2222+
swapTab = null;
2223+
}
22242224
}
22252225
}
22262226

modules/javafx.controls/src/test/java/test/javafx/scene/control/TabPaneTest.java

+17
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,23 @@ private void show() {
463463
assertSame(TabPane.TabDragPolicy.FIXED, tabPane.getTabDragPolicy());
464464
}
465465

466+
@Test public void tabDragPolicyReorderAndAsymmetricMouseEvent() {
467+
tabPane.setTabDragPolicy(TabPane.TabDragPolicy.REORDER);
468+
tabPane.getTabs().add(tab1);
469+
tabPane.getTabs().add(tab2);
470+
root.getChildren().add(tabPane);
471+
show();
472+
473+
root.layout();
474+
475+
double xval = (tabPane.localToScene(tabPane.getLayoutBounds())).getMinX();
476+
double yval = (tabPane.localToScene(tabPane.getLayoutBounds())).getMinY();
477+
478+
SceneHelper.processMouseEvent(scene,
479+
MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+75, yval+20));
480+
tk.firePulse();
481+
}
482+
466483
@Test public void setRotateGraphicAndSeeValueIsReflectedInModel() {
467484
tabPane.setRotateGraphic(true);
468485
assertTrue(tabPane.rotateGraphicProperty().getValue());

0 commit comments

Comments
 (0)