فهرست منبع

Restores correct window position after fullscreen toggling off on Linux

Yuri Roubinsky 5 سال پیش
والد
کامیت
90f00c0813
2فایلهای تغییر یافته به همراه7 افزوده شده و 1 حذف شده
  1. 6 1
      platform/x11/os_x11.cpp
  2. 1 0
      platform/x11/os_x11.h

+ 6 - 1
platform/x11/os_x11.cpp

@@ -1433,7 +1433,11 @@ void OS_X11::set_window_fullscreen(bool p_enabled) {
 		// Restore
 		// Restore
 		set_window_maximized(false);
 		set_window_maximized(false);
 	}
 	}
-
+	if (!p_enabled) {
+		set_window_position(last_position_before_fs);
+	} else {
+		last_position_before_fs = get_window_position();
+	}
 	current_videomode.fullscreen = p_enabled;
 	current_videomode.fullscreen = p_enabled;
 }
 }
 
 
@@ -3502,4 +3506,5 @@ OS_X11::OS_X11() {
 	window_focused = true;
 	window_focused = true;
 	xim_style = 0L;
 	xim_style = 0L;
 	mouse_mode = MOUSE_MODE_VISIBLE;
 	mouse_mode = MOUSE_MODE_VISIBLE;
+	last_position_before_fs = Vector2();
 }
 }

+ 1 - 0
platform/x11/os_x11.h

@@ -115,6 +115,7 @@ class OS_X11 : public OS_Unix {
 	// IME
 	// IME
 	bool im_active;
 	bool im_active;
 	Vector2 im_position;
 	Vector2 im_position;
+	Vector2 last_position_before_fs;
 
 
 	Size2 min_size;
 	Size2 min_size;
 	Size2 max_size;
 	Size2 max_size;