|
@@ -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);
|