Native window decorations: fixed enabled items is system menu

This commit is contained in:
Karl Tauber
2021-03-06 16:15:19 +01:00
parent a6815574f7
commit cfaeea039b

View File

@@ -601,12 +601,13 @@ public class FlatWindowsNativeWindowBorder
HMENU systemMenu = User32Ex.INSTANCE.GetSystemMenu( hwnd, false ); HMENU systemMenu = User32Ex.INSTANCE.GetSystemMenu( hwnd, false );
// update system menu // update system menu
int style = User32.INSTANCE.GetWindowLong( hwnd, GWL_STYLE );
boolean isMaximized = User32Ex.INSTANCE.IsZoomed( hwnd ); boolean isMaximized = User32Ex.INSTANCE.IsZoomed( hwnd );
setMenuItemState( systemMenu, SC_RESTORE, isMaximized ); setMenuItemState( systemMenu, SC_RESTORE, isMaximized );
setMenuItemState( systemMenu, SC_MOVE, !isMaximized ); setMenuItemState( systemMenu, SC_MOVE, !isMaximized );
setMenuItemState( systemMenu, SC_SIZE, !isMaximized ); setMenuItemState( systemMenu, SC_SIZE, (style & WS_THICKFRAME) != 0 && !isMaximized );
setMenuItemState( systemMenu, SC_MINIMIZE, true ); setMenuItemState( systemMenu, SC_MINIMIZE, (style & WS_MINIMIZEBOX) != 0 );
setMenuItemState( systemMenu, SC_MAXIMIZE, !isMaximized ); setMenuItemState( systemMenu, SC_MAXIMIZE, (style & WS_MAXIMIZEBOX) != 0 && !isMaximized );
setMenuItemState( systemMenu, SC_CLOSE, true ); setMenuItemState( systemMenu, SC_CLOSE, true );
// make "Close" item the default to be consistent with the system menu shown // make "Close" item the default to be consistent with the system menu shown