< prev index next >
modules/javafx.controls/src/main/java/javafx/scene/control/skin/TabPaneSkin.java
Print this page
@@ -1233,11 +1233,11 @@
closeBtn.getStyleClass().setAll("tab-close-button");
closeBtn.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent me) {
Tab tab = getTab();
- if (behavior.canCloseTab(tab)) {
+ if (me.getButton().equals(MouseButton.PRIMARY) && behavior.canCloseTab(tab)) {
behavior.closeTab(tab);
setOnMousePressed(null);
me.consume();
}
}
@@ -1425,23 +1425,31 @@
me.consume();
}
});
setOnMousePressed(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent me) {
- if (getTab().isDisable()) {
+ Tab tab = getTab();
+ if (tab.isDisable()) {
return;
}
+ if (me.getButton().equals(MouseButton.MIDDLE)
+ || me.getButton().equals(MouseButton.PRIMARY)) {
+
+ if (tab.getContextMenu() != null
+ && tab.getContextMenu().isShowing()) {
+ tab.getContextMenu().hide();
+ }
+ }
if (me.getButton().equals(MouseButton.MIDDLE)) {
if (showCloseButton()) {
- Tab tab = getTab();
if (behavior.canCloseTab(tab)) {
removeListeners(tab);
behavior.closeTab(tab);
}
}
} else if (me.getButton().equals(MouseButton.PRIMARY)) {
- behavior.selectTab(getTab());
+ behavior.selectTab(tab);
}
}
});
// initialize pseudo-class state
@@ -2003,23 +2011,29 @@
}
});
}
private void handleHeaderMousePressed(MouseEvent event) {
- ((StackPane)event.getSource()).setMouseTransparent(true);
+ if (event.getButton().equals(MouseButton.PRIMARY)) {
+ ((StackPane) event.getSource()).setMouseTransparent(true);
startDrag(event);
}
+ }
private void handleHeaderMouseReleased(MouseEvent event) {
- ((StackPane)event.getSource()).setMouseTransparent(false);
+ if (event.getButton().equals(MouseButton.PRIMARY)) {
+ ((StackPane) event.getSource()).setMouseTransparent(false);
stopDrag();
event.consume();
}
+ }
private void handleHeaderDragged(MouseEvent event) {
+ if (event.getButton().equals(MouseButton.PRIMARY)) {
perfromDrag(event);
}
+ }
private double getDragDelta(double curr, double prev) {
if (getSkinnable().getSide().equals(Side.TOP) ||
getSkinnable().getSide().equals(Side.RIGHT)) {
return curr - prev;
< prev index next >