瀏覽代碼

Implement always-on-top for MacOS

Courtesy of @bruvzg.
Pedro J. Estébanez 7 年之前
父節點
當前提交
2e8c7824c0
共有 2 個文件被更改,包括 16 次插入0 次删除
  1. 2 0
      platform/osx/os_osx.h
  2. 14 0
      platform/osx/os_osx.mm

+ 2 - 0
platform/osx/os_osx.h

@@ -205,6 +205,8 @@ public:
 	virtual bool is_window_minimized() const;
 	virtual void set_window_maximized(bool p_enabled);
 	virtual bool is_window_maximized() const;
+	virtual void set_window_always_on_top(bool p_enabled);
+	virtual bool is_window_always_on_top() const;
 	virtual void request_attention();
 	virtual String get_joy_guid(int p_device) const;
 

+ 14 - 0
platform/osx/os_osx.mm

@@ -1891,6 +1891,20 @@ void OS_OSX::move_window_to_foreground() {
 	[window_object orderFrontRegardless];
 }
 
+void OS_OSX::set_window_always_on_top(bool p_enabled) {
+	if (is_window_always_on_top() == p_enabled)
+		return;
+
+	if (p_enabled)
+		[window_object setLevel:NSFloatingWindowLevel];
+	else
+		[window_object setLevel:NSNormalWindowLevel];
+}
+
+bool OS_OSX::is_window_always_on_top() const {
+	return [window_object level] == NSFloatingWindowLevel;
+}
+
 void OS_OSX::request_attention() {
 
 	[NSApp requestUserAttention:NSCriticalRequest];