|
|
@ -34,6 +34,7 @@ WindowBaseImpl::WindowBaseImpl(IAvnWindowBaseEvents *events, IAvnGlContext *gl) |
|
|
_lastTitle = @""; |
|
|
_lastTitle = @""; |
|
|
|
|
|
|
|
|
Window = nullptr; |
|
|
Window = nullptr; |
|
|
|
|
|
lastMenu = nullptr; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
HRESULT WindowBaseImpl::ObtainNSViewHandle(void **ret) { |
|
|
HRESULT WindowBaseImpl::ObtainNSViewHandle(void **ret) { |
|
|
@ -91,6 +92,10 @@ HRESULT WindowBaseImpl::Show(bool activate, bool isDialog) { |
|
|
|
|
|
|
|
|
[Window setTitle:_lastTitle]; |
|
|
[Window setTitle:_lastTitle]; |
|
|
|
|
|
|
|
|
|
|
|
if(!isDialog) { |
|
|
|
|
|
[GetWindowProtocol() setCanBecomeKeyAndMain]; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (ShouldTakeFocusOnShow() && activate) { |
|
|
if (ShouldTakeFocusOnShow() && activate) { |
|
|
[Window orderFront:Window]; |
|
|
[Window orderFront:Window]; |
|
|
[Window makeKeyAndOrderFront:Window]; |
|
|
[Window makeKeyAndOrderFront:Window]; |
|
|
@ -306,12 +311,14 @@ HRESULT WindowBaseImpl::SetMainMenu(IAvnMenu *menu) { |
|
|
|
|
|
|
|
|
auto nativeMenu = dynamic_cast<AvnAppMenu *>(menu); |
|
|
auto nativeMenu = dynamic_cast<AvnAppMenu *>(menu); |
|
|
|
|
|
|
|
|
auto nsmenu = nativeMenu->GetNative(); |
|
|
lastMenu = nativeMenu->GetNative(); |
|
|
|
|
|
|
|
|
[GetWindowProtocol() applyMenu:nsmenu]; |
|
|
if(Window != nullptr) { |
|
|
|
|
|
[GetWindowProtocol() applyMenu:lastMenu]; |
|
|
|
|
|
|
|
|
if ([Window isKeyWindow]) { |
|
|
if ([Window isKeyWindow]) { |
|
|
[GetWindowProtocol() showWindowMenuWithAppMenu]; |
|
|
[GetWindowProtocol() showWindowMenuWithAppMenu]; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return S_OK; |
|
|
return S_OK; |
|
|
@ -524,17 +531,30 @@ void WindowBaseImpl::InitialiseNSWindow() { |
|
|
[Window setStyleMask:NSWindowStyleMaskBorderless]; |
|
|
[Window setStyleMask:NSWindowStyleMaskBorderless]; |
|
|
[Window setBackingType:NSBackingStoreBuffered]; |
|
|
[Window setBackingType:NSBackingStoreBuffered]; |
|
|
|
|
|
|
|
|
[Window setContentSize: lastSize]; |
|
|
[Window setContentSize:lastSize]; |
|
|
[Window setContentMinSize:lastMinSize]; |
|
|
[Window setContentMinSize:lastMinSize]; |
|
|
[Window setContentMaxSize:lastMaxSize]; |
|
|
[Window setContentMaxSize:lastMaxSize]; |
|
|
|
|
|
|
|
|
[Window setOpaque:false]; |
|
|
[Window setOpaque:false]; |
|
|
|
|
|
|
|
|
[Window setContentMinSize: lastMinSize]; |
|
|
[Window setContentMinSize:lastMinSize]; |
|
|
[Window setContentMaxSize: lastMaxSize]; |
|
|
[Window setContentMaxSize:lastMaxSize]; |
|
|
|
|
|
|
|
|
|
|
|
if (lastMenu != nullptr) { |
|
|
|
|
|
[GetWindowProtocol() applyMenu:lastMenu]; |
|
|
|
|
|
|
|
|
|
|
|
if ([Window isKeyWindow]) { |
|
|
|
|
|
[GetWindowProtocol() showWindowMenuWithAppMenu]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
id <AvnWindowProtocol> WindowBaseImpl::GetWindowProtocol() { |
|
|
id <AvnWindowProtocol> WindowBaseImpl::GetWindowProtocol() { |
|
|
return static_cast<id <AvnWindowProtocol>>(Window); |
|
|
id instance; |
|
|
|
|
|
if ([Window conformsToProtocol:@protocol(AvnWindowProtocol)]) { |
|
|
|
|
|
instance = Window; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return instance; |
|
|
} |
|
|
} |
|
|
|