diff --git a/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java b/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java index 07d09bff..475b172f 100644 --- a/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java +++ b/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java @@ -601,12 +601,13 @@ public class FlatWindowsNativeWindowBorder HMENU systemMenu = User32Ex.INSTANCE.GetSystemMenu( hwnd, false ); // update system menu + int style = User32.INSTANCE.GetWindowLong( hwnd, GWL_STYLE ); boolean isMaximized = User32Ex.INSTANCE.IsZoomed( hwnd ); setMenuItemState( systemMenu, SC_RESTORE, isMaximized ); setMenuItemState( systemMenu, SC_MOVE, !isMaximized ); - setMenuItemState( systemMenu, SC_SIZE, !isMaximized ); - setMenuItemState( systemMenu, SC_MINIMIZE, true ); - setMenuItemState( systemMenu, SC_MAXIMIZE, !isMaximized ); + setMenuItemState( systemMenu, SC_SIZE, (style & WS_THICKFRAME) != 0 && !isMaximized ); + setMenuItemState( systemMenu, SC_MINIMIZE, (style & WS_MINIMIZEBOX) != 0 ); + setMenuItemState( systemMenu, SC_MAXIMIZE, (style & WS_MAXIMIZEBOX) != 0 && !isMaximized ); setMenuItemState( systemMenu, SC_CLOSE, true ); // make "Close" item the default to be consistent with the system menu shown