Преглед изворни кода

Merge pull request #40062 from reduz/fix-cursor-shape

Ensure cursor shape changes when exiting window, fixes #37724
Rémi Verschelde пре 5 година
родитељ
комит
d8f0375ce6
2 измењених фајлова са 6 додато и 1 уклоњено
  1. 5 1
      scene/main/viewport.cpp
  2. 1 0
      scene/main/window.cpp

+ 5 - 1
scene/main/viewport.cpp

@@ -2083,7 +2083,11 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
 				Control *c = over;
 				Vector2 cpos = pos;
 				while (c) {
-					cursor_shape = c->get_cursor_shape(cpos);
+					if (gui.mouse_focus_mask != 0 || c->has_point(cpos)) {
+						cursor_shape = c->get_cursor_shape(cpos);
+					} else {
+						cursor_shape = Control::CURSOR_ARROW;
+					}
 					cpos = c->get_transform().xform(cpos);
 					if (cursor_shape != Control::CURSOR_ARROW) {
 						break;

+ 1 - 0
scene/main/window.cpp

@@ -309,6 +309,7 @@ void Window::_event_callback(DisplayServer::WindowEvent p_event) {
 		case DisplayServer::WINDOW_EVENT_MOUSE_ENTER: {
 			_propagate_window_notification(this, NOTIFICATION_WM_MOUSE_ENTER);
 			emit_signal("mouse_entered");
+			DisplayServer::get_singleton()->cursor_set_shape(DisplayServer::CURSOR_ARROW); //restore cursor shape
 		} break;
 		case DisplayServer::WINDOW_EVENT_MOUSE_EXIT: {
 			_propagate_window_notification(this, NOTIFICATION_WM_MOUSE_EXIT);