|
|
|
@ -451,6 +451,10 @@ void WindowImpl::ExitFullScreenMode() { |
|
|
|
} |
|
|
|
|
|
|
|
HRESULT WindowImpl::SetWindowState(AvnWindowState state) { |
|
|
|
return SetWindowState(state, true); |
|
|
|
} |
|
|
|
|
|
|
|
HRESULT WindowImpl::SetWindowState(AvnWindowState state, bool shouldResize) { |
|
|
|
START_COM_CALL; |
|
|
|
|
|
|
|
@autoreleasepool { |
|
|
|
@ -474,61 +478,63 @@ HRESULT WindowImpl::SetWindowState(AvnWindowState state) { |
|
|
|
if (_shown) { |
|
|
|
_actualWindowState = _lastWindowState; |
|
|
|
|
|
|
|
switch (state) { |
|
|
|
case Maximized: |
|
|
|
if (currentState == FullScreen) { |
|
|
|
ExitFullScreenMode(); |
|
|
|
} |
|
|
|
if (shouldResize) { |
|
|
|
switch (state) { |
|
|
|
case Maximized: |
|
|
|
if (currentState == FullScreen) { |
|
|
|
ExitFullScreenMode(); |
|
|
|
} |
|
|
|
|
|
|
|
lastPositionSet.X = 0; |
|
|
|
lastPositionSet.Y = 0; |
|
|
|
lastPositionSet.X = 0; |
|
|
|
lastPositionSet.Y = 0; |
|
|
|
|
|
|
|
if ([Window isMiniaturized]) { |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
if ([Window isMiniaturized]) { |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
|
|
|
|
if (!IsZoomed()) { |
|
|
|
DoZoom(); |
|
|
|
} |
|
|
|
break; |
|
|
|
if (!IsZoomed()) { |
|
|
|
DoZoom(); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case Minimized: |
|
|
|
if (currentState == FullScreen) { |
|
|
|
ExitFullScreenMode(); |
|
|
|
} else { |
|
|
|
[Window miniaturize:Window]; |
|
|
|
} |
|
|
|
break; |
|
|
|
case Minimized: |
|
|
|
if (currentState == FullScreen) { |
|
|
|
ExitFullScreenMode(); |
|
|
|
} else { |
|
|
|
[Window miniaturize:Window]; |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case FullScreen: |
|
|
|
if ([Window isMiniaturized]) { |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
case FullScreen: |
|
|
|
if ([Window isMiniaturized]) { |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
|
|
|
|
EnterFullScreenMode(); |
|
|
|
break; |
|
|
|
EnterFullScreenMode(); |
|
|
|
break; |
|
|
|
|
|
|
|
case Normal: |
|
|
|
if ([Window isMiniaturized]) { |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
case Normal: |
|
|
|
if ([Window isMiniaturized]) { |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
|
|
|
|
if (currentState == FullScreen) { |
|
|
|
ExitFullScreenMode(); |
|
|
|
} |
|
|
|
if (currentState == FullScreen) { |
|
|
|
ExitFullScreenMode(); |
|
|
|
} |
|
|
|
|
|
|
|
if (IsZoomed()) { |
|
|
|
if (_decorations == SystemDecorationsFull) { |
|
|
|
DoZoom(); |
|
|
|
} else { |
|
|
|
[Window setFrame:_preZoomSize display:true]; |
|
|
|
auto newFrame = [Window contentRectForFrameRect:[Window frame]].size; |
|
|
|
if (IsZoomed()) { |
|
|
|
if (_decorations == SystemDecorationsFull) { |
|
|
|
DoZoom(); |
|
|
|
} else { |
|
|
|
[Window setFrame:_preZoomSize display:true]; |
|
|
|
auto newFrame = [Window contentRectForFrameRect:[Window frame]].size; |
|
|
|
|
|
|
|
[View setFrameSize:newFrame]; |
|
|
|
} |
|
|
|
[View setFrameSize:newFrame]; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
WindowEvents->WindowStateChanged(_actualWindowState); |
|
|
|
|