diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index 6c8b0f42..278a5444 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -40,6 +40,7 @@ import com.formdev.flatlaf.util.ColorFunctions; import com.formdev.flatlaf.util.DerivedColor; import com.formdev.flatlaf.util.ScaledNumber; import com.formdev.flatlaf.util.StringUtils; +import com.formdev.flatlaf.util.SystemInfo; /** * Load UI defaults from properties files associated to Flat LaF classes and add to UI defaults. @@ -96,6 +97,27 @@ class UIDefaultsLoader } } + // collect all platform specific keys (but do not modify properties) + ArrayList platformSpecificKeys = new ArrayList<>(); + for( Object key : properties.keySet() ) { + if( ((String)key).startsWith( "[" ) ) + platformSpecificKeys.add( (String) key ); + } + + // remove platform specific properties and re-add only properties + // for current platform, but with platform prefix removed + if( !platformSpecificKeys.isEmpty() ) { + String platformPrefix = + SystemInfo.IS_WINDOWS ? "[win]" : + SystemInfo.IS_MAC ? "[mac]" : + SystemInfo.IS_LINUX ? "[linux]" : "[unknown]"; + for( String key : platformSpecificKeys ) { + Object value = properties.remove( key ); + if( key.startsWith( platformPrefix ) ) + properties.put( key.substring( platformPrefix.length() ), value ); + } + } + Function resolver = value -> { return resolveValue( properties, value ); }; diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index 6261d273..f5891f0a 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -206,6 +206,7 @@ OptionPane.buttonMinimumWidth={scaledNumber}72 OptionPane.sameSizeButtons=true OptionPane.setButtonMargin=false OptionPane.buttonOrientation=4 +[mac]OptionPane.isYesLast=true OptionPane.errorIcon=com.formdev.flatlaf.icons.FlatOptionPaneErrorIcon OptionPane.informationIcon=com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon