Selaa lähdekoodia

Merge pull request #96148 from bruvzg/win_mouse_hide

[Windows] Hide cursor before moving.
Rémi Verschelde 1 vuosi sitten
vanhempi
commit
610a887893
1 muutettua tiedostoa jossa 11 lisäystä ja 8 poistoa
  1. 11 8
      platform/windows/display_server_windows.cpp

+ 11 - 8
platform/windows/display_server_windows.cpp

@@ -133,9 +133,17 @@ String DisplayServerWindows::get_name() const {
 }
 }
 
 
 void DisplayServerWindows::_set_mouse_mode_impl(MouseMode p_mode) {
 void DisplayServerWindows::_set_mouse_mode_impl(MouseMode p_mode) {
+	if (p_mode == MOUSE_MODE_HIDDEN || p_mode == MOUSE_MODE_CAPTURED || p_mode == MOUSE_MODE_CONFINED_HIDDEN) {
+		// Hide cursor before moving.
+		if (hCursor == nullptr) {
+			hCursor = SetCursor(nullptr);
+		} else {
+			SetCursor(nullptr);
+		}
+	}
+
 	if (windows.has(MAIN_WINDOW_ID) && (p_mode == MOUSE_MODE_CAPTURED || p_mode == MOUSE_MODE_CONFINED || p_mode == MOUSE_MODE_CONFINED_HIDDEN)) {
 	if (windows.has(MAIN_WINDOW_ID) && (p_mode == MOUSE_MODE_CAPTURED || p_mode == MOUSE_MODE_CONFINED || p_mode == MOUSE_MODE_CONFINED_HIDDEN)) {
 		// Mouse is grabbed (captured or confined).
 		// Mouse is grabbed (captured or confined).
-
 		WindowID window_id = _get_focused_window_or_popup();
 		WindowID window_id = _get_focused_window_or_popup();
 		if (!windows.has(window_id)) {
 		if (!windows.has(window_id)) {
 			window_id = MAIN_WINDOW_ID;
 			window_id = MAIN_WINDOW_ID;
@@ -165,13 +173,8 @@ void DisplayServerWindows::_set_mouse_mode_impl(MouseMode p_mode) {
 		_register_raw_input_devices(INVALID_WINDOW_ID);
 		_register_raw_input_devices(INVALID_WINDOW_ID);
 	}
 	}
 
 
-	if (p_mode == MOUSE_MODE_HIDDEN || p_mode == MOUSE_MODE_CAPTURED || p_mode == MOUSE_MODE_CONFINED_HIDDEN) {
-		if (hCursor == nullptr) {
-			hCursor = SetCursor(nullptr);
-		} else {
-			SetCursor(nullptr);
-		}
-	} else {
+	if (p_mode == MOUSE_MODE_VISIBLE || p_mode == MOUSE_MODE_CONFINED) {
+		// Show cursor.
 		CursorShape c = cursor_shape;
 		CursorShape c = cursor_shape;
 		cursor_shape = CURSOR_MAX;
 		cursor_shape = CURSOR_MAX;
 		cursor_set_shape(c);
 		cursor_set_shape(c);