Browse Source

Merge pull request #41285 from bruvzg/macos_on_top_4

[macOS] Fix "on top" incorrectly set on init and resetting on window update.
Rémi Verschelde 5 years ago
parent
commit
d4665e7859
2 changed files with 6 additions and 2 deletions
  1. 1 1
      main/main.cpp
  2. 5 1
      platform/osx/display_server_osx.mm

+ 1 - 1
main/main.cpp

@@ -1140,7 +1140,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 		}
 		}
 
 
 		if (bool(GLOBAL_GET("display/window/size/always_on_top"))) {
 		if (bool(GLOBAL_GET("display/window/size/always_on_top"))) {
-			window_flags |= DisplayServer::WINDOW_FLAG_ALWAYS_ON_TOP;
+			window_flags |= DisplayServer::WINDOW_FLAG_ALWAYS_ON_TOP_BIT;
 		}
 		}
 	}
 	}
 
 

+ 5 - 1
platform/osx/display_server_osx.mm

@@ -2374,7 +2374,11 @@ void DisplayServerOSX::_update_window(WindowData p_wd) {
 		[p_wd.window_object setHidesOnDeactivate:YES];
 		[p_wd.window_object setHidesOnDeactivate:YES];
 	} else {
 	} else {
 		// Reset these when our window is not a borderless window that covers up the screen
 		// Reset these when our window is not a borderless window that covers up the screen
-		[p_wd.window_object setLevel:NSNormalWindowLevel];
+		if (p_wd.on_top) {
+			[p_wd.window_object setLevel:NSFloatingWindowLevel];
+		} else {
+			[p_wd.window_object setLevel:NSNormalWindowLevel];
+		}
 		[p_wd.window_object setHidesOnDeactivate:NO];
 		[p_wd.window_object setHidesOnDeactivate:NO];
 	}
 	}
 }
 }