diff --git a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TabPaneSkin.java b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TabPaneSkin.java --- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TabPaneSkin.java +++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TabPaneSkin.java @@ -437,6 +437,30 @@ final Insets padding = getSkinnable().getInsets(); return snapSize(prefheight) + snapSize(padding.getTop()) + snapSize(padding.getBottom()); } + + double minw = 0.0d; + @Override protected double computeMinWidth(double height) { + // The TabPane can only be as wide as it widest content width. + for (TabContentRegion contentRegion: tabContentRegions) { + minw = Math.max(minw, snapSize(contentRegion.minWidth(-1))); + } + double prefwidth = isHorizontal() ? + minw : minw + snapSize(tabHeaderArea.minHeight(-1)); + final Insets padding = getSkinnable().getInsets(); + return snapSize(prefwidth) + snapSize(padding.getRight()) + snapSize(padding.getLeft()); + } + + private double minh = 0.0d; + @Override protected double computeMinHeight(double width) { + // The TabPane can only be as high as it highest content height. + for (TabContentRegion contentRegion: tabContentRegions) { + minh = Math.max(minh, snapSize(contentRegion.minHeight(-1))); + } + double prefheight = isHorizontal()? + minh + snapSize(tabHeaderArea.minHeight(-1)) : minh; + final Insets padding = getSkinnable().getInsets(); + return snapSize(prefheight) + snapSize(padding.getTop()) + snapSize(padding.getBottom()); + } @Override public double getBaselineOffset() { return tabHeaderArea.getBaselineOffset() + tabHeaderArea.getLayoutY(); diff --git a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TextAreaSkin.java b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TextAreaSkin.java --- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TextAreaSkin.java +++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TextAreaSkin.java @@ -822,8 +822,18 @@ return offset == paragraph.length() ? '\n' : paragraph.charAt(offset); } + + @Override + protected double computeMinHeight(double width) { + return scrollPane.minHeight(width); + } @Override + protected double computeMinWidth(double height) { + return scrollPane.minWidth(height); + } + + @Override public int getInsertionPoint(double x, double y) { TextArea textArea = getSkinnable();