Index: build.xml =================================================================== --- build.xml (revision 454651) +++ build.xml (working copy) @@ -262,7 +262,6 @@ - Index: src/test/api/java/common/javax/swing/plaf/basic/BasicTextPaneUITest.java =================================================================== --- src/test/api/java/common/javax/swing/plaf/basic/BasicTextPaneUITest.java (revision 453197) +++ src/test/api/java/common/javax/swing/plaf/basic/BasicTextPaneUITest.java (working copy) @@ -175,4 +175,37 @@ newStyle.getAttribute(StyleConstants.FontFamily)); } + public void testPropertyChange_NullFont() { + // regression test to HARMONY-1799 + + textPane = new JTextPane(); + + textPane.setFont(font); + Style style = textPane.getStyle(StyleContext.DEFAULT_STYLE); + style.addAttribute(StyleConstants.Italic, Boolean.TRUE); + style.addAttribute(StyleConstants.Bold, Boolean.TRUE); + textPane.setFont(null); + assertNull(style.getAttribute(StyleConstants.FontFamily)); + assertNull(style.getAttribute(StyleConstants.Italic)); + assertNull(style.getAttribute(StyleConstants.Bold)); + + StyledDocument newDoc = new DefaultStyledDocument(); + Style newStyle = newDoc.getStyle(StyleContext.DEFAULT_STYLE); + assertEquals(1, newStyle.getAttributeCount()); + newStyle.addAttribute(StyleConstants.Italic, Boolean.FALSE); + newStyle.addAttribute(StyleConstants.Bold, Boolean.TRUE); + newStyle.addAttribute(StyleConstants.StrikeThrough, Boolean.FALSE); + textPane.setForeground(Color.RED); + textPane.setDocument(newDoc); + assertSame(textPane.getStyle(StyleContext.DEFAULT_STYLE), newStyle); + assertNull(textPane.getFont()); + assertNull(newStyle.getAttribute(StyleConstants.FontFamily)); + assertNull(newStyle.getAttribute(StyleConstants.Italic)); + assertNull(newStyle.getAttribute(StyleConstants.Bold)); + assertSame(newStyle.getAttribute(StyleConstants.Foreground), + textPane.getForeground()); + assertFalse(((Boolean)newStyle.getAttribute(StyleConstants.StrikeThrough)) + .booleanValue()); + } + }