[macOS, 3.x] Use occlusionState to determine when window is drawable.
This commit is contained in:
parent
fe7ed984b5
commit
d4c2e7ec2e
2 changed files with 7 additions and 1 deletions
|
@ -135,6 +135,7 @@ public:
|
||||||
bool resizable;
|
bool resizable;
|
||||||
bool window_focused;
|
bool window_focused;
|
||||||
bool on_top;
|
bool on_top;
|
||||||
|
bool is_visible;
|
||||||
|
|
||||||
Size2 window_size;
|
Size2 window_size;
|
||||||
Rect2 restore_rect;
|
Rect2 restore_rect;
|
||||||
|
|
|
@ -463,6 +463,10 @@ static NSCursor *cursorFromSelector(SEL selector, SEL fallback = nil) {
|
||||||
OS_OSX::singleton->window_focused = true;
|
OS_OSX::singleton->window_focused = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
- (void)windowDidChangeOcclusionState:(NSNotification *)notification {
|
||||||
|
OS_OSX::singleton->is_visible = ([OS_OSX::singleton->window_object occlusionState] & NSWindowOcclusionStateVisible) && [OS_OSX::singleton->window_object isVisible];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface GodotContentView : NSOpenGLView <NSTextInputClient> {
|
@interface GodotContentView : NSOpenGLView <NSTextInputClient> {
|
||||||
|
@ -2410,7 +2414,7 @@ String OS_OSX::get_system_dir(SystemDir p_dir, bool p_shared_storage) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OS_OSX::can_draw() const {
|
bool OS_OSX::can_draw() const {
|
||||||
return true;
|
return is_visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OS_OSX::set_clipboard(const String &p_text) {
|
void OS_OSX::set_clipboard(const String &p_text) {
|
||||||
|
@ -3568,6 +3572,7 @@ OS_OSX::OS_OSX() {
|
||||||
im_position = Point2();
|
im_position = Point2();
|
||||||
layered_window = false;
|
layered_window = false;
|
||||||
autoreleasePool = [[NSAutoreleasePool alloc] init];
|
autoreleasePool = [[NSAutoreleasePool alloc] init];
|
||||||
|
is_visible = true;
|
||||||
|
|
||||||
eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
|
eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
|
||||||
ERR_FAIL_COND(!eventSource);
|
ERR_FAIL_COND(!eventSource);
|
||||||
|
|
Loading…
Reference in a new issue