< 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 >