changeset 6988:07114320d480

RT-24658: When Tab is disabled, its content must be disabled,too
author jgiles
date Fri, 09 May 2014 11:09:40 +1200
parents 3faf10865303
children 923349122172
files modules/controls/src/main/java/javafx/scene/control/Tab.java modules/controls/src/test/java/javafx/scene/control/TabPaneTest.java
diffstat 2 files changed, 27 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/modules/controls/src/main/java/javafx/scene/control/Tab.java	Thu May 08 13:32:07 2014 +1200
+++ b/modules/controls/src/main/java/javafx/scene/control/Tab.java	Fri May 09 11:09:40 2014 +1200
@@ -645,7 +645,14 @@
     }
     
     private void updateDisabled() {
-        setDisabled(isDisable() || (getTabPane() != null && getTabPane().isDisabled()));
+        boolean disabled = isDisable() || (getTabPane() != null && getTabPane().isDisabled());
+        setDisabled(disabled);
+
+        // Fix for RT-24658 - content should be disabled if the tab is disabled
+        Node content = getContent();
+        if (content != null) {
+            content.setDisable(disabled);
+        }
     }
     
      /**
--- a/modules/controls/src/test/java/javafx/scene/control/TabPaneTest.java	Thu May 08 13:32:07 2014 +1200
+++ b/modules/controls/src/test/java/javafx/scene/control/TabPaneTest.java	Fri May 09 11:09:40 2014 +1200
@@ -964,4 +964,23 @@
         assertEquals(1, pane.getSelectionModel().getSelectedIndex());
         assertEquals(tab1, pane.getSelectionModel().getSelectedItem());
     }
+
+    @Test public void test_rt_24658() {
+        Button btn = new Button("Button");
+        final Tab disabled = new Tab("Disabled");
+        disabled.setContent(btn);
+
+        TabPane pane = new TabPane();
+        pane.getTabs().addAll(disabled);
+
+        assertEquals(0, pane.getSelectionModel().getSelectedIndex());
+        assertEquals(disabled, pane.getSelectionModel().getSelectedItem());
+        assertFalse(btn.isDisabled());
+
+        disabled.setDisable(true);
+        assertTrue(btn.isDisabled());
+
+        disabled.setDisable(false);
+        assertFalse(btn.isDisabled());
+    }
 }