Skip to content

Commit

Permalink
Merge pull request #49017 from bruvzg/macos_on_top_32
Browse files Browse the repository at this point in the history
[macOS] Allow "on top" windows to enter full-screen mode.
  • Loading branch information
akien-mga authored May 24, 2021
2 parents 59b6950 + 31be8ae commit 0b136a8
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions platform/osx/os_osx.mm
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,9 @@ - (void)windowDidExitFullScreen:(NSNotification *)notification {

if (!OS_OSX::singleton->resizable)
[OS_OSX::singleton->window_object setStyleMask:[OS_OSX::singleton->window_object styleMask] & ~NSWindowStyleMaskResizable];

if (OS_OSX::singleton->on_top)
[OS_OSX::singleton->window_object setLevel:NSFloatingWindowLevel];
}

- (void)windowDidChangeBackingProperties:(NSNotification *)notification {
Expand Down Expand Up @@ -1688,7 +1691,7 @@ static void displays_arrangement_changed(CGDirectDisplayID display_id, CGDisplay
}

on_top = p_desired.always_on_top;
if (p_desired.always_on_top) {
if (p_desired.always_on_top && !p_desired.fullscreen) {
[window_object setLevel:NSFloatingWindowLevel];
}

Expand Down Expand Up @@ -2553,7 +2556,7 @@ static int get_screen_index(NSScreen *screen) {
[window_object setHidesOnDeactivate:YES];
} else {
// Reset these when our window is not a borderless window that covers up the screen
if (on_top) {
if (on_top & !zoomed) {
[window_object setLevel:NSFloatingWindowLevel];
} else {
[window_object setLevel:NSNormalWindowLevel];
Expand Down Expand Up @@ -2725,6 +2728,7 @@ static int get_screen_index(NSScreen *screen) {
}

if (zoomed != p_enabled) {
[window_object setLevel:NSNormalWindowLevel];
if (layered_window)
set_window_per_pixel_transparency_enabled(false);
if (!resizable)
Expand Down Expand Up @@ -2822,6 +2826,9 @@ static int get_screen_index(NSScreen *screen) {

on_top = p_enabled;

if (zoomed)
return;

if (is_window_always_on_top() == p_enabled)
return;

Expand All @@ -2832,7 +2839,11 @@ static int get_screen_index(NSScreen *screen) {
}

bool OS_OSX::is_window_always_on_top() const {
return [window_object level] == NSFloatingWindowLevel;
if (zoomed) {
return on_top;
} else {
return [window_object level] == NSFloatingWindowLevel;
}
}

bool OS_OSX::is_window_focused() const {
Expand Down

0 comments on commit 0b136a8

Please sign in to comment.