|
|
|
@ -31,9 +31,11 @@ public: |
|
|
|
AvnPoint lastPositionSet; |
|
|
|
NSString* _lastTitle; |
|
|
|
IAvnAppMenu* _mainMenu; |
|
|
|
bool _shown; |
|
|
|
|
|
|
|
WindowBaseImpl(IAvnWindowBaseEvents* events, IAvnGlContext* gl) |
|
|
|
{ |
|
|
|
_shown = false; |
|
|
|
_mainMenu = nullptr; |
|
|
|
BaseEvents = events; |
|
|
|
_glContext = gl; |
|
|
|
@ -115,6 +117,8 @@ public: |
|
|
|
[NSApp activateIgnoringOtherApps:YES]; |
|
|
|
|
|
|
|
[Window setTitle:_lastTitle]; |
|
|
|
|
|
|
|
_shown = true; |
|
|
|
|
|
|
|
return S_OK; |
|
|
|
} |
|
|
|
@ -615,57 +619,64 @@ private: |
|
|
|
{ |
|
|
|
_lastWindowState = state; |
|
|
|
|
|
|
|
switch (state) { |
|
|
|
case Maximized: |
|
|
|
lastPositionSet.X = 0; |
|
|
|
lastPositionSet.Y = 0; |
|
|
|
|
|
|
|
if([Window isMiniaturized]) |
|
|
|
{ |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
|
|
|
|
if(!IsZoomed()) |
|
|
|
{ |
|
|
|
DoZoom(); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case Minimized: |
|
|
|
[Window miniaturize:Window]; |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
if([Window isMiniaturized]) |
|
|
|
{ |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
|
|
|
|
if(IsZoomed()) |
|
|
|
{ |
|
|
|
DoZoom(); |
|
|
|
} |
|
|
|
break; |
|
|
|
if(_shown) |
|
|
|
{ |
|
|
|
switch (state) { |
|
|
|
case Maximized: |
|
|
|
lastPositionSet.X = 0; |
|
|
|
lastPositionSet.Y = 0; |
|
|
|
|
|
|
|
if([Window isMiniaturized]) |
|
|
|
{ |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
|
|
|
|
if(!IsZoomed()) |
|
|
|
{ |
|
|
|
DoZoom(); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case Minimized: |
|
|
|
[Window miniaturize:Window]; |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
if([Window isMiniaturized]) |
|
|
|
{ |
|
|
|
[Window deminiaturize:Window]; |
|
|
|
} |
|
|
|
|
|
|
|
if(IsZoomed()) |
|
|
|
{ |
|
|
|
DoZoom(); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return S_OK; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
protected: |
|
|
|
|
|
|
|
public: |
|
|
|
virtual void OnResized () override |
|
|
|
{ |
|
|
|
auto windowState = [Window isMiniaturized] ? Minimized |
|
|
|
: (IsZoomed() ? Maximized : Normal); |
|
|
|
|
|
|
|
if (windowState != _lastWindowState) |
|
|
|
if(_shown) |
|
|
|
{ |
|
|
|
_lastWindowState = windowState; |
|
|
|
auto windowState = [Window isMiniaturized] ? Minimized |
|
|
|
: (IsZoomed() ? Maximized : Normal); |
|
|
|
|
|
|
|
WindowEvents->WindowStateChanged(windowState); |
|
|
|
if (windowState != _lastWindowState) |
|
|
|
{ |
|
|
|
_lastWindowState = windowState; |
|
|
|
|
|
|
|
WindowEvents->WindowStateChanged(windowState); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
protected: |
|
|
|
virtual NSWindowStyleMask GetStyle() override |
|
|
|
{ |
|
|
|
unsigned long s = NSWindowStyleMaskBorderless; |
|
|
|
@ -1360,6 +1371,16 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
- (void)windowDidResize:(NSNotification *)notification |
|
|
|
{ |
|
|
|
auto parent = dynamic_cast<IWindowStateChanged*>(_parent.operator->()); |
|
|
|
|
|
|
|
if(parent != nullptr) |
|
|
|
{ |
|
|
|
parent->OnResized(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame |
|
|
|
{ |
|
|
|
return true; |
|
|
|
@ -1430,6 +1451,7 @@ protected: |
|
|
|
[Window setContentSize:NSSize{x, y}]; |
|
|
|
|
|
|
|
[Window setFrameTopLeftPoint:ToNSPoint(ConvertPointY(lastPositionSet))]; |
|
|
|
|
|
|
|
return S_OK; |
|
|
|
} |
|
|
|
} |
|
|
|
|