Преглед на файлове

Implement always-on-top for MacOS

Courtesy of @bruvzg.
Pedro J. Estébanez преди 7 години
родител
ревизия
f43981e9a6
променени са 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

@@ -209,6 +209,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

@@ -1696,6 +1696,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];