Skip to content

Releases: weisJ/darklaf

v3.1.1

16 Sep 08:06
fefb326

Choose a tag to compare

Addressed issues

  • #362: Fixed incorrect shadow size for buttons

v3.1.0

13 Jul 10:57
a3353e2

Choose a tag to compare

With this release Java 17 is required.

Visual changes

  • Several adjustments to list/tree selection in order to align it with newer Window/macOS design language
  • Fix borders of Popups on macOS

API Changes

  • DarkSVGIcon can now be used as a multi resolution version of ImageIcon.
  • SwingX support has been removed

Other changes

  • #336 Updated Russian translations (by @vlsi)
  • JSVG (used for rendering svg images) has been updated to version 2.0.0

Addressed issues

  • #344: Fixed opacity slider having no effect (by @SiboVG in #345)
  • #358: Fixed issue with animation callbacks not being called on EDT
  • #359: Fixed table header index out of bounds errors

v3.0.2

30 Sep 14:18
b072844

Choose a tag to compare

This release updates the svg renderer to be more forgiving with unimplemented features (e.g. filter primitives) or malformed svg.

Addressed issues

  • Stackoverflow when setting the border of a spinner editor to an UIResource border #327
  • Malformed svg files or usage of unsupported svg features may fail during painting

v3.0.1

01 Aug 18:07
69afe2f

Choose a tag to compare

Visual changes

  • Borderless variants of buttons now paint a focus border for better accessibility. c89d617
  • Some minor layout improvements to the theme settings dialog.

Behavioural changes

  • Borderless variants now implicitly set JComponent.isRequestFocusEnabled to false for less visual noise when clicking them.

API Changes

  • Custom SVG colours can now be declared using the <solidcolor/> tag element. 6484b96
  • Loading indicator icons are now exposed through AllIcons in darklaf-iconset. d6b946f

New components

Other changes

Addressed issues

  • Popupmenu doesn't correctly reports the focus owner resulting in incorrect focus highlights. b979a36
  • Several button types don't respect the JComponent.isRequestFocusEnabled property. 6c875ec
  • #322 Maximize and restore not working on Windows 10. 869b1d5
  • #321 Non relevant error message "Couldn't get HWND of window" on Windows may appear. 57411d7
  • Theme monitoring may not work depending on initialization method. ce4d8c0
  • Top level menu items may not be fully centered. cb93e43
  • #325 Native librarys don't get cleaned up porperly on Windows. ce97823
  • #320 SAXEception when loading icons from outside the ui thread. 664ac79

Support for Modules, Windows 11 and more

01 Aug 17:42

Choose a tag to compare

Version 3.0.0 enables proper module support by providing a module-info.java for each module.
Note that this release brings some breaking changes as packages have been moved to resolve issues with split packages:

  • In darklaf-property-loader the top level package is now com.github.weisj.darklaf.properties. In particular this affects PropertyLoader, IconLoader and the various (svg)icon classes.
  • com.github.weisj.darklaf.color.DarkColorModel* in darklaf-utils has been moved to com.github.weisj.darklaf.color in darklaf-property-loader
  • Most functions which return/receive an IconLoader now return IconResolver instead.
  • com.github.weisj.darklaf.color.ColorUtil in darklaf-utils has been moved to com.github.weisj.darklaf.util
  • com.github.weisj.darklaf.util in darklaf-core has been moved to com.github.weisj.darklaf.ui.util
  • com.github.weisj.darklaf.platform in darklaf-native-util has been renamed to com.github.weisj.darklaf.nativeutil
  • All icons have moved into the darklaf-iconset project. If you need to use them you can depend on darklaf-iconset and use the IconSet.ICON_LOADER to retrieve them.

New modules

darklaf-iconset

Provides a set of icons optimized for darklaf. They can also be used with other LaFs without any further setup. If you wish to customize the colors used for the icons you have to provide the colors defined in https://github.com/weisJ/darklaf/blob/master/theme/src/main/resources/com/github/weisj/darklaf/theme/icon_presets/light_icons.properties through the UIDefaults in UIManager.

Icons can be conveniently accessed through the AllIcons class.

darklaf-platform-preferences

A module which exposed the native theme detection mechanism as a standalone dependency. It can be used without having to use darklaf itself. Simply create a new SystemPreferencesManager and start listening for changes to the OS theme.

darklaf-platform-decorations

A module which exposed the native decorations feature of darklaf as a standalone dependency. It should be compatible with almost all other laf implementations (mileage may vary). The responsible class is ExternalLafDecorator. By default the implementation tries to derive sensible colors based on other LaF properties. If you want to customize the appearance of the titlebar you can do so by providing a DecorationsColorProvider.
See the discussion in #316 for more informations and use cases.

Contributions

Visual changes

  • An JInternalPane outside of a JDesktopPane no longer has a shadow. 4537a68
  • Improved rendering of JSpinner and JComboBox inside a popup menu. 84fceaf
  • The "smaller" and "larger" text in the ThemeSettings are now represented by apropriate icons. #269 c6a3637
  • On Windows 11 rounded scrollbars will be used by default. 4c28099
  • Updated window button icons on Windows 11 to match the native look. 7197d08
  • The border radius of tooltips has been increased on macOS and Windows 11. 212b006
  • #306 On macOS and Windows 11 root panes no longer have borders by default, because they look out of place. 3180dfb

Behavioural changes

  • A JPopupMenu which has no menu items will no longer be displayed. b72f069
  • Improved resizing behaviour on Windwos which custom decorations enabled. c190762 8539c5e
  • Support for snap layouts on Windows 11 (Still has some caveats #311).

API Changes

  • Colors now need to be declared using a # in a .properties file when loaded through PropertyLoader. (Not using # was deprecated before). 1f6eb6e
  • Fallback value declarations in svg icons nowuse a % prefix instead of #. c43cbbc
  • FileTree and corresponding classes have been removed (were deprecated before). 425289e
  • Boolean client properties defined by the theme can now be overwritten. 48b5630
  • The Animator class API has been overhauled to be friendlier to use. 56dcca7
  • Added PanelPopup#addButton to easily add a button the the title bar of a JTrabFrame tab.
  • Added ScrollBarConstants.KEY_BACKGROUND_PAINTER property to provide the means to paint behind a scrollbar e.g. for search highlighting. The value has to be of type SizedPainter<JScrollBar>. See https://github.com/weisJ/darklaf/blob/d7d08139ab6d56a11d0c9a3c61ed73e0d1564510/core/src/test/java/com/github/weisj/darklaf/ui/scrollPane/OverlayRSyntaxScrollPane.java for an example. e9a3502
  • Added FontPrototpye to Theme to specify a prototype font which all default fonts will be based off of. See #303 for more information. This can also be changed through the ThemeSettings class.

Other changes

  • Prevent recursive laf installation. 8f8194e
  • The IconLoader will now release resources if the loaded icon is no longer used anywhere. 126670c
  • The backing implementation for svg icons has been moved to JSVG. Previously svgSalamander has been used. This improves the performance for icons which frequently change color values during runtime.
  • Improved code-singing experience on macOS.
  • Improved compatibility on macOS arm.

Addressed issues

  • Possible ConcurrentModificationException while theme events are dispatched. a9ae43f 85e556f
  • Incorrect selection foreground color in OneDark theme. e3a855c
  • #259 Arrow of disabled menu doesn't look disabled. e68f78e
  • #260 Disabled menu doesn't get painted with disabled text. 45abd4a
  • Adding the menu bar to a different component when the unified menu bar is enabled (Windows only) it becomes invisible. 7369248
  • JInternalFrame outside of JDesktopPane always appears selected. e48f23d
  • #314 NPE when using ScrollPopupMenu. d99c8a2
  • Table may use incorrect cell editor. 42d9476
  • Tooltip shadow is sometimes painted more than once resulting in a darker shadow. 7d6a354
  • With custom decorations enabled popups can be resized on Windows when they shouldn't. 812bf63
  • #275 NPE when uninstalling and a tree is currently being collapsed/expanded. c7ddc1d
  • #274 Black tooltip shadow on Linux and Java 8. 4904d3c
  • #268 System settings are overwritten by settings of ThemeSettings dialog. 32158fe
  • #289 Missing translations when using Java >= 9. e9625ce
  • Window bounds might change when installing/uninstalling decorations on macOS. 378b6f1 af82ec0
  • #298 Tooltips may show an incorrect background color. ff44d37 2ef0cb7
  • The ThemeSettings dialog doesn't reliably respond to changes in locale. 34f3815
  • Custom title bar on Windows uses incorrect font. 3639369
  • Combo box uses incorrect background color in some focus/selection combinations. f9e35e6

A big thank you to everyone who contributed, reported bug or requested features!

v2.7.3

17 Sep 20:18

Choose a tag to compare

Addressed issues

  • Tooltips have no content on Linux running with Java 8 #274
  • NPE when a tree is collapsed/expanded during laf uninstallation #275

v2.7.2

01 Aug 12:42

Choose a tag to compare

This version is identical to v2.7.1 and only differs in the fact that it's dependency on com.github.weisj:swing-extensions-laf-support no longer is a SNAPSHOT version. #257

v2.7.1

01 Aug 10:02

Choose a tag to compare

Addressed issues

v2.7.0 M1 support and module compliance

31 Jul 18:42

Choose a tag to compare

This release adds support for M1 on macOS. It also makes darklaf compliant with the module system introduced in Java 9.
A future release will add full support for modules.

NOTE:
If you are using JTabFrame with Java 16 or newer you may need to adjust your startup parameters for the best results.
All necessary information can be found in the console log upon startup.

Visual changes

  • Tables in html no longer have a border by default. e55440f
  • The arrow icons now specify visual paddings. 7c0171d
  • Imporved baseline calculation when using DarkSliderUI.KEY_USE_TRACK_AS_BASELINE.
    7762fb1

API Changes

  • Icons based on svg files can now declare visual paddings in teh xml by setting
    the visualPadding="top left bottom right"
    property on the top level xml tag. fe19e2e
  • FileTree is now deprecated. It's implementation will be moved to the swing-dsl
    project. 9b14afb
  • Added DarkPopupMenuUI.KEY_MAX_POPUP_SIZE to specify the maximum size for a JPopupMenu. If the preferred size of
    the popup is larger than that it will be wrapped inside an OverlayScrollPane.
    9ef6d06
  • The macos.useoloredTitleBar property can now be changed per window using DarkRootPaneUI.KEY_COLORED_TITLE_BAR.
    afd246a
  • Add UIManager property ComboBox.maximumRowCount to set the maximum number of rows displayed in a combo-box popup
    per theme. c352040

Other changes

  • Implemented M1 support on macOS.
  • Removed dependencies on internal jdk classes making darklaf almost module compliant.
  • Updated german translation. b71e769 by Peter Lemke
  • Updated polish translation. c9593dc by Pabilo8

Addressed issues

  • JTextArea, JtextPane etc. prevent garbage collection of the component hierarchy.
    3457eeb
  • Usage of UIUpdater prevents garbage collection of the component hierarchy. 8725b20
  • Changing the value of a JSpinner with the mouse wheel doesn't check whether the attempted value is valid.
    afaa9fb
  • The target indicator of a DnD operation of a JTabFrame isn't removed when the operation us canceled.
    5e5bba8
  • Fallback opacity keys of a svg are lost when changing the Laf. 7124da0
  • Non JTrabFrame drop targets may qualify as a valid destination. #236 8bdfbe7
  • Cell hint popups at the top/bottom of cells incorrectly calculate their size to the full area of the cell. #238
    8e6573b
  • Loading a native library which isn't supported results in an incorrect provider being set.
    8215cd1
  • JList paints cells incorrectly after an empty cell is encountered. 40f6bac
  • Fonts may not be replaced during installation for newer jdk versions. 1b0752e

v2.6.1

27 May 14:12

Choose a tag to compare

Addressed issues

  • palette.* colors are missing in high contrast themes. b01ef6a
  • Possible NPE while painting svg icons if RenderingHints.KEY_TEXT_ANTIALIASING isn't specified in the desktop environment [Linux] b5da5cd