private void checkZoom() { if (peer != null) { int state = peer.getState(); if (state != Frame.MAXIMIZED_BOTH && isMaximized()) { deliverZoom(true); } else if (state == Frame.MAXIMIZED_BOTH && !isMaximized()) { deliverZoom(false); } } }
@Override public void setWindowState(int windowState) { if (peer == null || !peer.isVisible()) { // setVisible() applies the state return; } int prevWindowState = peer.getState(); if (prevWindowState == windowState) return; final long nsWindowPtr = getNSWindowPtr(); if ((windowState & Frame.ICONIFIED) != 0) { // Treat all state bit masks with ICONIFIED bit as ICONIFIED state. windowState = Frame.ICONIFIED; } switch (windowState) { case Frame.ICONIFIED: if (prevWindowState == Frame.MAXIMIZED_BOTH) { // let's return into the normal states first // the zoom call toggles between the normal and the max states unmaximize(); } CWrapper.NSWindow.miniaturize(nsWindowPtr); break; case Frame.MAXIMIZED_BOTH: if (prevWindowState == Frame.ICONIFIED) { // let's return into the normal states first CWrapper.NSWindow.deminiaturize(nsWindowPtr); } maximize(); break; case Frame.NORMAL: if (prevWindowState == Frame.ICONIFIED) { CWrapper.NSWindow.deminiaturize(nsWindowPtr); } else if (prevWindowState == Frame.MAXIMIZED_BOTH) { // the zoom call toggles between the normal and the max states unmaximize(); } break; default: throw new RuntimeException("Unknown window state: " + windowState); } // NOTE: the SWP.windowState field gets updated to the newWindowState // value when the native notification comes to us }