diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e0f8a8f5..6a622c728 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,13 @@ FlatLaf Change Log (some security software allows loading native library but blocks method invocation). - macOS: Fixed crash when running in WebSwing. (issue #826; regression in 3.4) +- 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](https://github.com/apache/netbeans/issues/7560#issuecomment-2226439215) + and + [apache/netbeans#6647](https://github.com/apache/netbeans/issues/6647#issuecomment-2070124442). #### Incompatibilities diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java index 49bb3008c..2a4bf6a5f 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java @@ -113,7 +113,13 @@ public Popup getPopup( Component owner, Component contents, int x, int y ) // macOS and Linux adds drop shadow to heavy weight popups if( SystemInfo.isMacOS || SystemInfo.isLinux ) { NonFlashingPopup popup = new NonFlashingPopup( getPopupForScreenOfOwner( owner, contents, x, y, true ), owner, contents ); - if( popup.popupWindow != null && SystemInfo.isMacOS && FlatNativeMacLibrary.isLoaded() ) + if( popup.popupWindow != null && SystemInfo.isMacOS && + // do not use rounded border on macOS 14.4+ because it may freeze the application + // and crash the macOS WindowServer process (reports vary from Finder restarts to OS restarts) + // https://github.com/apache/netbeans/issues/7560#issuecomment-2226439215 + // https://github.com/apache/netbeans/issues/6647#issuecomment-2070124442 + SystemInfo.osVersion < SystemInfo.toVersion( 14, 4, 0, 0 ) && + FlatNativeMacLibrary.isLoaded() ) setupRoundedBorder( popup.popupWindow, owner, contents ); return popup; }