Fix mouse cursor and notification for force dragging

This commit is contained in:
Haoyu Qiu 2021-12-03 18:19:41 +08:00
parent ce63df2610
commit 86a47c6540

View File

@ -1869,14 +1869,12 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
Transform2D localizer = gui.drag_mouse_over->get_global_transform_with_canvas().affine_inverse(); Transform2D localizer = gui.drag_mouse_over->get_global_transform_with_canvas().affine_inverse();
gui.drag_mouse_over_pos = localizer.xform(viewport_pos); gui.drag_mouse_over_pos = localizer.xform(viewport_pos);
if ((mm->get_button_mask() & MouseButton::MASK_LEFT) != MouseButton::NONE) { bool can_drop = _gui_drop(gui.drag_mouse_over, gui.drag_mouse_over_pos, true);
bool can_drop = _gui_drop(gui.drag_mouse_over, gui.drag_mouse_over_pos, true);
if (!can_drop) { if (!can_drop) {
ds_cursor_shape = DisplayServer::CURSOR_FORBIDDEN; ds_cursor_shape = DisplayServer::CURSOR_FORBIDDEN;
} else { } else {
ds_cursor_shape = DisplayServer::CURSOR_CAN_DROP; ds_cursor_shape = DisplayServer::CURSOR_CAN_DROP;
}
} }
} }
@ -2044,6 +2042,7 @@ void Viewport::_gui_force_drag(Control *p_base, const Variant &p_data, Control *
if (p_control) { if (p_control) {
_gui_set_drag_preview(p_base, p_control); _gui_set_drag_preview(p_base, p_control);
} }
_propagate_viewport_notification(this, NOTIFICATION_DRAG_BEGIN);
} }
void Viewport::_gui_set_drag_preview(Control *p_base, Control *p_control) { void Viewport::_gui_set_drag_preview(Control *p_base, Control *p_control) {