mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 06:20:53 +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
|
- FlatLaf window decorations: Window top border on Windows 10 in "full window
|
||||||
content" mode was not fully repainted when activating or deactivating window.
|
content" mode was not fully repainted when activating or deactivating window.
|
||||||
(issue #809)
|
(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>`,
|
- HTML: Fixed font sizes for HTML tags `<h1>`...`<h6>`, `<code>`, `<kbd>`,
|
||||||
`<big>`, `<small>` and `<samp>` in HTML text for components Button, CheckBox,
|
`<big>`, `<small>` and `<samp>` in HTML text for components Button, CheckBox,
|
||||||
RadioButton, MenuItem (and subclasses), JideLabel, JideButton, JXBusyLabel and
|
RadioButton, MenuItem (and subclasses), JideLabel, JideButton, JXBusyLabel and
|
||||||
|
|||||||
@@ -587,9 +587,16 @@ public class FlatButtonUI
|
|||||||
// paint text
|
// paint text
|
||||||
if( clippedText != null && !clippedText.isEmpty() ) {
|
if( clippedText != null && !clippedText.isEmpty() ) {
|
||||||
View view = (View) b.getClientProperty( BasicHTML.propertyKey );
|
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
|
view.paint( g, textR ); // HTML text
|
||||||
else
|
} else
|
||||||
paintText( g, b, textR, clippedText );
|
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 ) {
|
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() );
|
FontMetrics fm = b.getFontMetrics( b.getFont() );
|
||||||
int mnemonicIndex = FlatLaf.isShowMnemonics() ? b.getDisplayedMnemonicIndex() : -1;
|
int mnemonicIndex = FlatLaf.isShowMnemonics() ? b.getDisplayedMnemonicIndex() : -1;
|
||||||
|
|
||||||
|
|||||||
@@ -16,12 +16,15 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.ui;
|
package com.formdev.flatlaf.ui;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.plaf.basic.BasicHTML;
|
import javax.swing.plaf.basic.BasicHTML;
|
||||||
import javax.swing.text.Document;
|
import javax.swing.text.Document;
|
||||||
import javax.swing.text.LabelView;
|
import javax.swing.text.LabelView;
|
||||||
|
import javax.swing.text.Style;
|
||||||
|
import javax.swing.text.StyleConstants;
|
||||||
import javax.swing.text.View;
|
import javax.swing.text.View;
|
||||||
import javax.swing.text.html.HTMLDocument;
|
import javax.swing.text.html.HTMLDocument;
|
||||||
import javax.swing.text.html.StyleSheet;
|
import javax.swing.text.html.StyleSheet;
|
||||||
@@ -70,6 +73,34 @@ public class FlatHTML
|
|||||||
// dumpViews( view, 0 );
|
// 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.
|
* Clears cached values in view so that CSS changes take effect.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user