Explorar o código

Merge pull request #21753 from guilhermefelipecgs/fix_confined_mode

Fixes to mouse mode confined and captured
Rémi Verschelde %!s(int64=7) %!d(string=hai) anos
pai
achega
fe78aa0c30
Modificáronse 1 ficheiros con 12 adicións e 5 borrados
  1. 12 5
      platform/x11/os_x11.cpp

+ 12 - 5
platform/x11/os_x11.cpp

@@ -744,12 +744,15 @@ void OS_X11::set_mouse_mode(MouseMode p_mode) {
 			ERR_PRINT("NO GRAB");
 		}
 
-		center.x = current_videomode.width / 2;
-		center.y = current_videomode.height / 2;
-		XWarpPointer(x11_display, None, x11_window,
-				0, 0, 0, 0, (int)center.x, (int)center.y);
+		if (mouse_mode == MOUSE_MODE_CAPTURED) {
+			center.x = current_videomode.width / 2;
+			center.y = current_videomode.height / 2;
+
+			XWarpPointer(x11_display, None, x11_window,
+					0, 0, 0, 0, (int)center.x, (int)center.y);
 
-		input->set_mouse_position(center);
+			input->set_mouse_position(center);
+		}
 	} else {
 		do_mouse_warp = false;
 	}
@@ -2067,6 +2070,10 @@ void OS_X11::process_xevents() {
 
 				Point2i rel = pos - last_mouse_pos;
 
+				if (mouse_mode == MOUSE_MODE_CAPTURED) {
+					pos = Point2i(current_videomode.width / 2, current_videomode.height / 2);
+				}
+
 				Ref<InputEventMouseMotion> mm;
 				mm.instance();