mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-06 22:10:54 +03:00
Button and ToggleButton: UI properties [Toggle]Button.selectedForeground and [Toggle]Button.pressedForeground did not work for HTML text (issue #848)
This commit is contained in:
@@ -14,6 +14,8 @@ FlatLaf Change Log
|
||||
- FlatLaf window decorations: Window top border on Windows 10 in "full window
|
||||
content" mode was not fully repainted when activating or deactivating window.
|
||||
(issue #809)
|
||||
- Button and ToggleButton: UI properties `[Toggle]Button.selectedForeground` and
|
||||
`[Toggle]Button.pressedForeground` did not work for HTML text. (issue #848)
|
||||
- HTML: Fixed font sizes for HTML tags `<h1>`...`<h6>`, `<code>`, `<kbd>`,
|
||||
`<big>`, `<small>` and `<samp>` in HTML text for components Button, CheckBox,
|
||||
RadioButton, MenuItem (and subclasses), JideLabel, JideButton, JXBusyLabel and
|
||||
|
||||
@@ -587,9 +587,16 @@ public class FlatButtonUI
|
||||
// paint text
|
||||
if( clippedText != null && !clippedText.isEmpty() ) {
|
||||
View view = (View) b.getClientProperty( BasicHTML.propertyKey );
|
||||
if( view != null )
|
||||
if( view != null ) {
|
||||
// update foreground color in HTML view, which is necessary
|
||||
// for selected and pressed states
|
||||
// (only for enabled buttons, because UIManager.getColor("textInactiveText")
|
||||
// is used for disabled components; see: javax.swing.text.GlyphView.paint())
|
||||
if( b.isEnabled() )
|
||||
FlatHTML.updateRendererCSSForeground( view, getForeground( b ) );
|
||||
|
||||
view.paint( g, textR ); // HTML text
|
||||
else
|
||||
} else
|
||||
paintText( g, b, textR, clippedText );
|
||||
}
|
||||
|
||||
@@ -635,8 +642,6 @@ public class FlatButtonUI
|
||||
}
|
||||
|
||||
public static void paintText( Graphics g, AbstractButton b, Rectangle textRect, String text, Color foreground ) {
|
||||
if(foreground == null)
|
||||
foreground=Color.red;
|
||||
FontMetrics fm = b.getFontMetrics( b.getFont() );
|
||||
int mnemonicIndex = FlatLaf.isShowMnemonics() ? b.getDisplayedMnemonicIndex() : -1;
|
||||
|
||||
|
||||
@@ -16,12 +16,15 @@
|
||||
|
||||
package com.formdev.flatlaf.ui;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.plaf.basic.BasicHTML;
|
||||
import javax.swing.text.Document;
|
||||
import javax.swing.text.LabelView;
|
||||
import javax.swing.text.Style;
|
||||
import javax.swing.text.StyleConstants;
|
||||
import javax.swing.text.View;
|
||||
import javax.swing.text.html.HTMLDocument;
|
||||
import javax.swing.text.html.StyleSheet;
|
||||
@@ -70,6 +73,34 @@ public class FlatHTML
|
||||
// dumpViews( view, 0 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates foreground in style sheet of the HTML view.
|
||||
* Adds "body { color: #<foreground-hex>; }"
|
||||
*/
|
||||
public static void updateRendererCSSForeground( View view, Color foreground ) {
|
||||
Document doc = view.getDocument();
|
||||
if( !(doc instanceof HTMLDocument) || foreground == null )
|
||||
return;
|
||||
|
||||
// add foreground rule if necessary
|
||||
// - use tag 'body' because BasicHTML.createHTMLView() also uses this tag
|
||||
// to set font and color styles to component font/color
|
||||
// see: SwingUtilities2.displayPropertiesToCSS()
|
||||
// - this color is not used if component is disabled;
|
||||
// JTextComponent.getDisabledTextColor() is used for disabled text components;
|
||||
// UIManager.getColor("textInactiveText") is used for other disabled components
|
||||
// see: javax.swing.text.GlyphView.paint()
|
||||
Style bodyStyle = ((HTMLDocument)doc).getStyle( "body" );
|
||||
if( bodyStyle == null ) {
|
||||
StyleSheet styleSheet = ((HTMLDocument)doc).getStyleSheet();
|
||||
styleSheet.addRule( String.format( "body { color: #%06x; }", foreground.getRGB() & 0xffffff ) );
|
||||
clearViewCaches( view );
|
||||
} else if( !foreground.equals( bodyStyle.getAttribute( StyleConstants.Foreground ) ) ) {
|
||||
bodyStyle.addAttribute( StyleConstants.Foreground, foreground );
|
||||
clearViewCaches( view );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears cached values in view so that CSS changes take effect.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user