Darklaf Versions Save

Darklaf - A themeable swing Look and Feel based on Darcula-Laf

v3.0.2-rc1

1 year ago

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-rc1

1 year ago

Visual changes

  • Borderless variants of buttons now paint a focus border for better accessibility. c89d617612b02121f363ea026a2383ca79b3cccc
  • 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. 6484b96c06d0da5b3d2c1d385ed791f1f078a2ae
  • Loading indicator icons are now exposed through AllIcons in darklaf-iconset. d6b946f3ee8bea346a775050b27e2ccb164b5f72

New components

Other changes

Addressed issues

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

v2.7.3-SNAPSHOT

2 years ago

Addressed issues

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

v3.0.0-SNAPSHOT

2 years ago

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

  • Corrected spanish translations #270 by @Z3R0x24
  • Updated gradle wrapper script. #296 by @ThexXTURBOXx
  • Corrected and extended Chinese/Japanese translations #299 by @Xujiayao
  • Fixed incorrect background during resizing #307 by @anticleiades
  • Corrected italian translations #308 by @anticleiades

Visual changes

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

Behavioural changes

  • A JPopupMenu which has no menu items will no longer be displayed. b72f0699fadaf2b2f69965a3f60301a8ea9ab29d
  • Improved resizing behaviour on Windwos which custom decorations enabled. c190762ffa82f9164ed31114988e940b18a89b9c 8539c5ec2fe7b8c4d7e3abdb4a08436fe7eb85a7
  • 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). 1f6eb6ecf8939ad6a19f8c283bba96b65a2fad5a
  • Fallback value declarations in svg icons nowuse a % prefix instead of #. c43cbbc62e20337910a634ceebe192b9db486f05
  • FileTree and corresponding classes have been removed (were deprecated before). 425289e4a531f5837288276203c7f2d5357527c3
  • Boolean client properties defined by the theme can now be overwritten. 48b5630b5bf61e0432878af2c5068ea67acb0acd
  • The Animator class API has been overhauled to be friendlier to use. 56dcca7a1ece8f33bd32906f9e247cb9f96b5cfc
  • 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. e9a350268beffc06f18630db6fbbc344a4405a87
  • 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. 8f8194ee813d4acbda616c487232076952670483
  • The IconLoader will now release resources if the loaded icon is no longer used anywhere. 126670c6d94795cd762ad03c3dd502fc41a42464
  • 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. a9ae43f2b214983a44f31845750f5ad8fdfda1ac 85e556fdfe0d4defdf3496ae8ef19bac1fbb63a6
  • Incorrect selection foreground color in OneDark theme. e3a855cbd933f8610f2179993db3a537494a6210
  • #259 Arrow of disabled menu doesn't look disabled. e68f78eea00e17b0ec24cf095fbc4fc8d7f77db7
  • #260 Disabled menu doesn't get painted with disabled text. 45abd4ad692cd7f6dad5c1d1087ca6ff40cdf63c
  • Adding the menu bar to a different component when the unified menu bar is enabled (Windows only) it becomes invisible. 73692487ac19526c234b294ffea3ca96fa1d0123
  • JInternalFrame outside of JDesktopPane always appears selected. e48f23d20b857e171da83f523aec2fa9a6199f1a
  • #314 NPE when using ScrollPopupMenu. d99c8a27ff46c989270251608f43268b30958725
  • Table may use incorrect cell editor. 42d94767d4cbbcbcf241281c3c3c698fe8f0b112
  • Tooltip shadow is sometimes painted more than once resulting in a darker shadow. 7d6a35407f68dd94f502d332eb3e7a5681f11f28
  • With custom decorations enabled popups can be resized on Windows when they shouldn't. 812bf630dad8c5233d934027fcf2369f409cb96f
  • #275 NPE when uninstalling and a tree is currently being collapsed/expanded. c7ddc1d448015003e8d8b391495a6e056ac24ca0
  • #274 Black tooltip shadow on Linux and Java 8. 4904d3c8aedc391092d63952e5f1ed56c4237834
  • #268 System settings are overwritten by settings of ThemeSettings dialog. 32158feb37d11de81f126f4637cbd26ed58c85e6
  • #289 Missing translations when using Java >= 9. e9625ce62d3243a00afc077cf7b5ad962ea59d0b
  • Window bounds might change when installing/uninstalling decorations on macOS. 378b6f19eae5f5e7b8ac997ea20490c3edd6776d af82ec0d9ef03384f9d1b75927488d29a6d9b57b
  • #298 Tooltips may show an incorrect background color. ff44d37d16a15d4319af0c52340b7fc1949d1ee1 2ef0cb79beeb146c3a5fe8ebd18caa482f38cff9
  • The ThemeSettings dialog doesn't reliably respond to changes in locale. 34f3815046d6f170a29723ccaa65b1ef2817919c
  • Custom title bar on Windows uses incorrect font. 36393697725bcea5947562bede66964bc098b552
  • Combo box uses incorrect background color in some focus/selection combinations. f9e35e6af14bdfe5080603c96560bb8f7c2feebc

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

v2.7.2-rc1

2 years ago

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-rc1

2 years ago

Addressed issues

  • Icons overlap line numbers in NumberingPane#251. b6d7c68f3a66c4a62aac60d4084ecad0848c9c49
  • Blurry text rendering on Java8 #256 1163664e29ca639e436bc07f1ac9f6502d819c8d

v2.7.0-rc1

2 years ago

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. e55440f46825844b34f5a7cf3499dec6e0e7b5cf
  • The arrow icons now specify visual paddings. 7c0171da86c65c33e434ab49cc84c1ab96a7bfb0
  • Imporved baseline calculation when using DarkSliderUI.KEY_USE_TRACK_AS_BASELINE. 7762fb11d0e35fddd3a8e4c7c8722c67d21b896e

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. fe19e2ebd2dfb1fa99f700b4e0c260fc8c8b24e0
  • FileTree is now deprecated. It's implementation will be moved to the swing-dsl project. 9b14afba1dbff7eecb27d8e45d169365d4dd4032
  • 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. 9ef6d0677f98b09b4549c5cdc580c1d207a48a03
  • The macos.useoloredTitleBar property can now be changed per window using DarkRootPaneUI.KEY_COLORED_TITLE_BAR. afd246ad86f97eccd6c6aa9a962cc7ba14d0da2f
  • Add UIManager property ComboBox.maximumRowCount to set the maximum number of rows displayed in a combo-box popup per theme. c3520409e9ee70c836ecb94171f3d67cb159e791

Other changes

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

Addressed issues

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

v2.6.1-rc1

2 years ago

Addressed issues

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

v2.6.0-rc1

2 years ago

Visual changes

  • Generate foreground colors for backgrounds which are derived from accent colors. a94087b84161497daefc5fbf2951557145319748 de0e9a6dc2de6e64c28720a8afbdf7d3ddcdb1a5
  • The slider variant of 'JToggleButton' will now show the state hints by default for all themes which declare Theme.highContrast as true. b1525204714a5635a1093b0fa405c3835d3b4aa9
  • Windows now supports native selection colors by deriving them from the accent color. d398cb91aa17c4df6e138717e8cd3b38e206a28e
  • Changing the theme through the LafManager now supports a nice transition animation. This can be disabled using the darkalf.animatedLafChange system property. It's also disabled when disabling all animations through darklaf.animations. cd2e4747affa43c1707367b1358cc7468f017474
  • To ensure consistent colors when using custom renderers with JTree the color of the renderer is used for painting the row background. However, if selected the color specified in the current theme is used instead. 2a1983d0fc972c8201409bcb11fdfd7a5c1be8a4
  • JSlider can now be aligned along the track as its baseline using the KEY_USE_TRACK_AS_BASELINE client-property. a8d940875739594f3164defea67bb1953f2eede3

API Changes

  • PropertyLoader is now more robust and capable:
    • Other properties can now be referenced in compound statements (i.e. when defining insets).
    • Colors should now be declared using a # prefix to differentiate them from numbers. All uses of the old color declaration style will issue warnings.
    • Properties used in svg icons can now make use of literal expression '...', which aren't processed further. e.g. '%palette.teal' will be correctly resolved when patching the icons and not be overwritten by laf changes.
  • DarkSVGIcon is now capable if inferring its size based on its content allow. 2cf2cfa44495e01bde7a74c66a71dbd710ed4086
    • This is done by passing a negative number to both the width and height of the icon.
    • By setting only one of width or height the other is calculated relatively to keep the original aspect ratio.
  • Only the Dialog font will now be replaced with the corresponding system font. d9b0de52a214d199c3b23b5abd58dd4ca3b905fc
  • Added darklaf.macOsColorTitleBar system property to globally set whether colored title bars should be used on macOS.
  • LafManager#enableLogging is now deprecated due to it ignoring changes made to the log level. c757ee5e0cd492f65aba1c7a67c555a7b6d2df7d
  • Added hyperlinkAccent property to themes. 8e7b5737e1445aa003f771f0024856174fdb6489
  • Focus parents can now be specified solely by settings the focusParent client-property of the component. By default, it is assumed that the action upon focus change is repainting the component. 3ff51442e18eba4ff1822d1ee1dfe7a2e2731559 7615b22c05f807681f5c2b0d3931ffa4c86595bc

Other changes

  • Updated SVG-Salamander from 1.1.2.3 to version 1.1.2.4. a2456bf7902aeaf457707bc25858b07516fb3859
  • SVG icons no longer create redundant copies when deriving with the same size. c05082665bc8448f06b66410f7644d0205e71522
  • Added support for the swing-dsl library.
  • Started removal of jdk-internal-api usage. f60be2d722bc45ffa7b0e022f8dd872348479815 a265ef96b950bbe77cf1c25a8a7b33877992c75d 75db998db69e3fe69350cb35447300b53e5cd4d1 1d7127adc8976e139c6f5808db609a62be2ce1cd 88cbd8a3a3ab5573d70c5c77551b054cf331c166 4b11cc84b94c11f5e5825af61d9b7d0a7886b1d6 e5a5bfda7feb7bcfaca03e4fe88e2cf3d6a577c6 f8f12a0816b849480335c08f33d8578bce2bf31e 23ea7926643d9d7a8ae3be1514db1d8f0b4857cd 164a9f6b13d8df1daecda26536f258cfaaa78e9c 9ee79f4329791e1b55454085fa7f121002bffd8c db7d560871eb6bc94bdadb44b17fa920b10a614a
  • Improved error message if native library couldn't be loaded. 6abca5cdd5ac6d6c05b1cb6aa9c819af35642cb4
  • It's now easier to implement a custom UI for the ThemeSettings using the ThemeSettingsUI class. It provides the components used in the default implementation of ThemeSettingsPanel already setup using the appropriate gluing code. 36ecf9c677df7910f1687be163fe2dfe19970031

Addressed issues

  • ThemeSettings don't apply system colors. 6b43390932d1c54c489fac2b908b5c1256509017 9e32dfc601024609274036f481db7ab1f7bb76d6
  • Insets on JList aren't respected when painting empty rows. 1f9377abf83d6d79faa5c6e1f44114bca573e26e
  • Currently open settings dialog doesn't receive focus when requesting the dialog to be opened. 48aa90d0650d1f478e4bf3b1608eaf8aab371ab7
  • Border of JTextField doesn't update when changing the DarkTextUI.KEY_HAS_WARNING property. 59084d38a5a941841c7921af45b9d5f1b0969ad3
  • Line numbers in NumberedTextComponent aren't properly aligned. a52cb110cec7ac79099fc641f36e22e994704a9b 4e5e6deb68393e4a7148f3ad6e19055f38f8c456
  • The off-screen buffer of DarkSVGIcon isn't painted using proper antialiasing. #231 c2f93043bff7db3da9fccc6cb88bd07afe01cb08
  • The off-screen buffer of DarkSVGIcon is created with the wrong size. #231 8fc941b65f1120bc91720c03f3072e6bd7ce514b
  • The shadow of balloon tooltips isn't properly aligned to the location of the pointer. 86d1c314f0fae3314d646fb83d24c7ebd1612609
  • NPE while painting the cellhint popup. #232 fe4071d8bac3d4d724736e2993e1f68de5249359
  • The content of the cellhint popup reports an incorrect size resulting in an possibly unwanted popup. b077e3f741c3c48e23bdaf7565a2e7fd1e9107ec
  • QuickColorChooser misses proper spacing between the check box and its label. 75dacb7ade9fa66105b353ad73f853abe299b1c5
  • The text of JTextField shifts when navigating to either end of the content. 8b3c2705c1eebc1d6965a287c8bd9439e05a591d
  • Navigating left/right in a JTree behaves differently than the default implementation. #228 6406f4ac8ab5d939f356815d4f321506b85369d7
  • NPE when rendering a null item in SimpleListCellRenderer. 3c9056f29b79d97c7baaf8a1a90fc41f558395cd
  • NPE when trying to open the ThemeSettings dialog with no themes installed. 4ef86deda005a8a47fee531123f505afabc9edc0
  • Insets of JTree are ignored while revealing expanded rows during navigation. 8c08640f0414aa7184debd4e0f65dbdf0d25c611
  • JTree uses inconsistent meaning of focus during rendering. 8ad14cc7004b7e42a71ffd690d0afd6b6fc78872

v2.5.5-rc1

3 years ago

Visual changes

  • Popup menus now use heavy weight popups by default on linux. 800a8898e79c24f4d1aef56f91e5d4e1f5d70dda

API Changes

  • Removed support for unused JList client-property JList.shrinkWrap.

Addressed issues

  • DerivableImageIcon might not paint the first time due to lazy and asynchronous loading. (See here) f46e601630cdb0d5d91b9378f235976d0997c42c
  • Shadow on balloon tooltips is cut off at the top. 2b525dd57fb1be87e3b16d298125e78b53ac220b
  • Tooltips are opaque on linux (Gnome) #229.
  • Boolean tree renderers don't display a hint popup when obscured. 5ac3291ac9c07188b0bb218b97cf1e760240d34f