Releases: JFormDesigner/FlatLaf
Releases · JFormDesigner/FlatLaf
3.7
Highlights
System File Chooser
Class SystemFileChooser (in package com.formdev.flatlaf.util) allows using operating system file dialogs in Java Swing applications.
Details: https://www.formdev.com/flatlaf/system-file-chooser/
Change Log
New features and improvements
- System File Chooser allows using operating system file dialogs in Java
Swing applications. (PR #988) - Zooming API. (PR #1051)
- Icons:
- Support scaling Laf icons (checkbox, radiobutton, etc). (issue #1061)
- Scale checkbox and radiobutton icons when using text styles
large,medium,smallandmini.
- TabbedPane: Added icon-only tab mode, which shows tab icons but hides tab
titles. Tab titles are used in "Show Hidden Tabs" popup menu. (set client
propertyJTabbedPane.tabWidthModeto"iconOnly") - TabbedPane: In scroll tab layout, propagate mouse wheel events to ancestors.
This allows mouse wheel scrolling if JTabbedPane is inside a JScrollPane. (PR #1030)
Fixed bugs
- CheckBox and RadioButton: Fixed styling of custom icon. Also fixed focus width
(and preferred size) if using custom icon. (PR #1060) - TabbedPane: In "Show Hidden Tabs" popup menu, do not show text "x. Tab" if tab
has icon but no title. (issue #1062) - TextField: Fixed wrong leading/trailing icon placement if border is set to
null. (issue #1047) - Extras: UI defaults inspector: Exclude inspector window from being blocked by
modal dialogs. (issue #1048) - JideButton, JideToggleButton, JideSplitButton and JideToggleSplitButton: Paint
border in button styleTOOLBAR_STYLEif in selected state. (issue #1045) - IntelliJ Themes: Fixed problem when using theme instance more than once when
switching to that theme. (issue #990)
3.6.2
Change Log
New features and improvements
- If using
FlatLaf.registerCustomDefaultsSource( "com.myapp.themes" )and
named Java modules, it is no longer necessary to addopens com.myapp.themes;
tomodule-info.java. (issue #1026) - Extras: Made animated theme change (class
FlatAnimatedLafChange) smoother.
Fixed bugs
- Tree and List: Fixed painting of rounded drop backgrounds. (issue #1023)
- Popup: Showing tooltip in inactive window brought that window to front (made
it active) and potentially hid the previously active window. (issue #1037) - Popup: No longer reuse popup windows for menus to avoid immediately closing
dialogs on ChromeOS. (issue #1029) - macOS: Fixed window "flashing" when switching from a light to a dark theme (or
vice versa). Especially when using animated theme changer (see FlatLaf Extras).
Incompatibilities
- FlatLaf properties files are now loaded using the UTF-8 character encoding
instead of ISO 8859-1. In usual properties files you will not notice any
difference because they use only ASCII characters, but if you've put localized
(non-English) texts (e.g. German umlauts) into your properties files, you need
to convert them to UTF-8. Properties files created with the FlatLaf Theme
Editor already use UTF-8, including in older versions. (issue #1031)
3.6.1
Change Log
- Extras: Support JSVG 2.0.0. Minimum JSVG version is now 1.6.0. (issue #997)
- FlatLaf window decorations (Windows 10/11 only): Improved diagonal window
resizing on top-left and top-right window corners. Top window resize area now
also covers iconify/maximize/close buttons. (issue #1015) - ToggleButton: Styling
selectedForegrounddid not work ifforegroundis also styled. (issue #1017) - JideSplitButton: Fixed updating popup when switching theme. (issue #1000)
- IntelliJ Themes: Fixed logging false errors when loading 3rd party
.theme.jsonfiles. (issue #990) - Linux: Popups appeared in wrong position on multi-screen setup if primary
display is located below or right to secondary display. (see NetBeans issue #8532) - macOS: Fixed popup flickering after theme change. (issue #1009)
- macOS with JetBrains Runtime: Fixed sometimes empty popups. (issue #1019)
3.6
Change Log
New features and improvements
- macOS: Re-enabled rounded popup border (see PR #772) on macOS 14.4+ (was disabled in 3.5.x).
- Increased contrast of text for better readability: (PR #972; issue #762)
- In FlatLaf Dark, FlatLaf Darcula and many dark IntelliJ themes, made all text colors brighter.
- In FlatLaf Light, FlatLaf IntelliJ and many light IntelliJ themes, made disabled text colors slightly darker.
- In FlatLaf macOS Light, made disabled text colors darker.
- In FlatLaf macOS Dark, made text colors of "default" button and selected ToggleButton lighter.
- CheckBox: Support styling indeterminate state of tri-state check boxes. (PR #936; issue #919)
- List: Support for alternate row highlighting. (PR #939)
- Tree: Support for alternate row highlighting. (PR #903)
- Tree: Support wide cell renderer. (issue #922)
- ScrollBar: Use rounded thumb also on Windows (as on macOS and Linux) and made
thumb slightly darker/lighter. (issue #918) - Extras:
FlatSVGIconcolor filters now can access painting component to
implement component state based color mappings. (issue #906) - Linux:
- Rounded iconify/maximize/close buttons if using FlatLaf window decorations. (PR #971)
- Added
libflatlaf-linux-arm64.sofor Linux on ARM64. (issue #899) - Use X11 window manager events to resize window, if FlatLaf window
decorations are enabled. This gives FlatLaf windows a more "native" feeling. (issue #866)
- IntelliJ Themes:
- Updated to latest versions and fixed various issues.
- Support customizing through properties files. (issue #824)
- SwingX: Support
JXTipOfTheDaycomponent. (issue #980) - Support key prefixes for Linux desktop environments (e.g.
[gnome],[kde]
or[xfce]) in properties files. (issue #974) - Support custom key prefixes (e.g.
[win10]or[test]) in properties files. (issue #649) - Support multi-prefixed keys (e.g.
[dark][gnome]TitlePane.buttonBackground).
The value is only used if all prefixes match current platform/theme. - Support new component border color to indicate success state (set client
propertyJComponent.outlinetosuccess). (PR #982, issue #945) - Fonts: Updated Inter to v4.1.
Fixed bugs
- Button: Fixed background and foreground colors for
borderlessand
toolBarButtonstyle default buttons (JButton.isDefaultButton()istrue). (issue #947) - FileChooser: Improved performance when navigating to large directories with
thousands of files. (issue #953) - PopupFactory: Fixed NPE on Windows 10 when
ownerisnull. (issue #952) - Popup: On Windows 10, drop shadow of heavy-weight popup was not updated if
popup moved/resized. (issue #942) - FlatLaf window decorations:
- Styling: MigLayout visual padding was not updated after applying style to
Button, ComboBox, Spinner, TextField (and subclasses) and ToggleButton. (issue #965) - Linux: Popups (menus and combobox lists) were not hidden when window is moved,
resized, maximized, restored, iconified or switched to another window. (issue #962) - Fixed loading FlatLaf UI delegate classes when using FlatLaf in special
application where multiple class loaders are involved. E.g. in Eclipse plugin
or in LibreOffice extension. (issues #955 and #851) - HTML: Fixed rendering of
<hr noshade>in dark themes. (issue #932) - TextComponents:
selectAllOnFocusPolicyrelated changes:- No longer select all text if selection (or caret position) was changed by
application andselectAllOnFocusPolicyisonce(the default). (issue #983) - FormattedTextField and Spinner:
selectAllOnFocusPolicy = oncebehaves now
asalways(wasneverbefore), which means that all text is selected when
component gains focus. This is because of special behavior of
JFormattedTextFieldthat did not allow implementation ofonce. - Client property
JTextField.selectAllOnFocusPolicynow also works on
(editable)JComboBoxand onJSpinner. - Added client property
JTextField.selectAllOnMouseClickto override UI
propertyTextComponent.selectAllOnMouseClick. (issue #961) - For
selectAllOnMouseClick = true, clicking with the mouse into the text
field, to focus it, now always selects all text, even ifselectAllOnFocusPolicyisonce.
- No longer select all text if selection (or caret position) was changed by
Incompatibilities
- IntelliJ Themes:
- Theme prefix in
IntelliJTheme$ThemeLaf.propertieschanged from[theme-name]to{theme-name}. - Renamed classes in package
com.formdev.flatlaf.intellijthemes.materialthemeuilitefromFlat<theme>toFlatMT<theme>. - Removed
Gruvbox Dark MediumandGruvbox Dark Softthemes.
- Theme prefix in
- Prefixed keys in properties files (e.g.
[dark]Button.backgroundor
[win]Button.arc) are now handled earlier than before. In previous versions,
prefixed keys always had higher priority than unprefixed keys and did always
overwrite unprefixed keys. Now prefixed keys are handled in same order as
unprefixed keys, which means that if a key is prefixed and unprefixed (e.g.
[win]Button.arcandButton.arc), the one which is last specified in
properties file is used.
Following worked in previous versions, but nowButton.arcis always6:This works in new (and old) versions:[win]Button.arc = 12 Button.arc = 6
Button.arc = 6 [win]Button.arc = 12
3.5.4
Fixes a regression in 3.5.3. If you use 3.5.3 it is strongly recommended to upgrade to 3.5.4.
Change Log
3.5.3
Change Log
Fixed bugs
- HTML: Fixed wrong rendering if HTML text contains
<style>tag with
attributes (e.g.<style type='text/css'>). (issue #905; regression in 3.5.1) - FlatLaf window decorations:
- Windows: Fixed possible deadlock with TabbedPane in window title area in
"full window content" mode. (issue #909) - Windows: Fixed wrong layout in maximized frame after changing screen scale
factor. (issue #904) - Linux: Fixed continuous cursor toggling between resize and standard cursor
when resizing window. (issue #907) - Fixed sometimes broken window moving with SplitPane in window title area in
"full window content" mode. (issue #926)
- Windows: Fixed possible deadlock with TabbedPane in window title area in
- Popup: On Windows 10, fixed misplaced popup drop shadow. (issue #911; regression in 3.5)
- Popup: Fixed NPE if
GraphicsConfigurationisnullon Windows. (issue #921) - Theme Editor: Fixed using color picker on secondary screen.
- Fixed detection of Windows 11 if custom exe launcher does not specify Windows 10+
compatibility in application manifest. (issue #916) - Linux: Fixed slightly different font size (or letter width) used to paint HTML
text when default font family is Cantarell (e.g. on Fedora). (issue #912)
Other Changes
- Class
FlatPropertiesLafnow supports FlatLaf macOS themes as base themes.
3.5.2
Change Log
Fixed bugs
- Windows: Fixed repaint issues (ghosting) on some systems (probably depending
on graphics card/driver). This is done by setting Java system property
sun.java2d.d3d.onscreentofalse(but only ifsun.java2d.d3d.onscreen,
sun.java2d.d3dandsun.java2d.noddraware not yet set), which disables
usage of Windows Direct3D (DirectX) onscreen surfaces. Component rendering
still uses Direct3D. (issue #887) - FlatLaf window decorations:
- Iconify/maximize/close buttons did not fill whole title bar height, if some
custom component in menu bar increases title bar height. (issue #897) - Windows: Fixed possible application freeze when using custom component that
overridesComponent.contains(int x, int y)and invokes
SwingUtilities.convertPoint()(or similar) from the overridden method.
(issue #878)
- Iconify/maximize/close buttons did not fill whole title bar height, if some
- TextComponents: Fixed too fast scrolling in multi-line text components when
using touchpads (e.g. on macOS). (issue #892) - ToolBar: Fixed endless loop if button in Toolbar has focus and is made
invisible. (issue #884)
Other Changes
- FlatLaf window decorations: Added client property
JRootPane.titleBarHeight
to allow specifying a (larger) preferred height for the title bar. (issue #897) - Added system property
flatlaf.useRoundedPopupBorderto allow disabling
native rounded popup borders on Windows 11 and macOS. On macOS 14.4+, where
rounded popup borders are disabled since FlatLaf 3.5 because of occasional
problems, you can use this to enable rounded popup borders (at your risk).
3.5.1
Fixes a regression and some bugs in 3.5. If you use 3.5 it is recommended to upgrade to 3.5.1.
Change Log
Fixed bugs
- HTML: Fixed occasional cutoff wrapped text when using multi-line text in HTML
tags<h1>...<h6>,<code>,<kbd>,<big>,<small>or<samp>.
(issue #873; regression in 3.5) - Popup: Fixed
UnsupportedOperationException: PERPIXEL_TRANSLUCENT translucency is not supported
exception on Haiku OS when showing popup (partly) outside of window. (issue #869) - HiDPI: Fixed occasional wrong repaint areas when using
HiDPIUtils.installHiDPIRepaintManager(). (see PR #864) - Added system property
flatlaf.useSubMenuSafeTriangleto allow disabling
submenu safe triangle (PR #490) for SWTSwing. (issue #870)
3.5
Change Log
New features and improvements
- Table: Support rounded selection. (PR #856)
- Button and ToggleButton: Added border colors for pressed and selected states. (issue #848)
- Label: Support painting background with rounded corners. (issue #842)
- Popup: Fixed flicker of popups (e.g. tooltips) while they are moving (e.g.
following mouse pointer). (issues #832 and #672) - FileChooser: Wrap shortcuts in scroll pane. (issue #828)
- Theme Editor: On macOS, use larger window title bar. (PR #779)
Fixed bugs
- macOS: Disabled rounded popup border (see PR #772) on macOS 14.4+ because it
may freeze the application and crash the macOS WindowServer process
(reports vary from Finder restarts to OS restarts).
This is a temporary change until a solution is found.
See NetBeans issues apache/netbeans#7560 and apache/netbeans#6647. - 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.selectedForegroundand
[Toggle]Button.pressedForegrounddid 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
JXHyperlink. Also fixed for Label and ToolTip if using Java 11+. - ScrollPane: Fixed/improved border painting at 125% - 175% scaling to avoid
different border thicknesses. (issue #743) - Table: Fixed painting of alternating rows below table if auto-resize mode is
JTable.AUTO_RESIZE_OFFand table width is smaller than scroll pane (was not
updated when table width changed and was painted on wrong side in
right-to-left component orientation). - Theme Editor: Fixed occasional empty window on startup on macOS.
- FlatLaf window decorations: Fixed black line sometimes painted on top of
(native) window border on Windows 11. (issue #852) - HiDPI: Fixed incomplete component paintings at 125% or 175% scaling on Windows
where sometimes a 1px wide area at the right or bottom component edge is not
repainted. E.g. ScrollPane focus indicator border. (issues #860 and #582)
Incompatibilities
- ProgressBar: Log warning (including stack trace) when uninstalling
indeterminate progress bar UI or usingJProgressBar.setIndeterminate(false)
not on AWT thread, because this may throw NPE inFlatProgressBarUI.paint().
(issues #841 and #830) - Panel: Rounded background of panel with rounded corners is now painted even if
panel is not opaque. (issue #840)
3.4.1
Change Log
Fixed bugs
- SplitPane: Update divider when client property
JSplitPane.expandableSidechanged. - TabbedPane: Fixed swapped back and forward scroll buttons when using
TabbedPane.scrollButtonsPlacement = trailing(regression in FlatLaf 3.3). - Fixed missing window top border on Windows 10 in "full window content" mode. (issue #809)
- Extras:
- Native libraries: Added API version check to test whether native library
matches the JAR (bad builds could e.g. ship a newer JAR with an older
incompatible native library) and to test whether native methods can be invoked
(some security software allows loading native library but blocks method invocation). - macOS: Fixed crash when running in WebSwing. (issue #826; regression in 3.4)
Incompatibilities
- File names of custom properties files for nested Laf classes now must include
name of enclosing class name. E.g. nested Laf classIntelliJTheme.ThemeLaf
usedThemeLaf.propertiesin previous versions, but now needs to be named
IntelliJTheme$ThemeLaf.properties.