diff options
Diffstat (limited to 'scene/main/viewport.cpp')
-rw-r--r-- | scene/main/viewport.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index f21142c739..5e8868c326 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1460,7 +1460,7 @@ Control* Viewport::_gui_find_control(const Point2& p_global) { Matrix32 xform; CanvasItem *pci = sw->get_parent_item(); if (pci) - xform=pci->get_global_transform(); + xform=pci->get_global_transform_with_canvas(); Control *ret = _gui_find_control_at_pos(sw,p_global,xform,gui.focus_inv_xform); @@ -1477,7 +1477,7 @@ Control* Viewport::_gui_find_control(const Point2& p_global) { Matrix32 xform; CanvasItem *pci = sw->get_parent_item(); if (pci) - xform=pci->get_global_transform(); + xform=pci->get_global_transform_with_canvas(); Control *ret = _gui_find_control_at_pos(sw,p_global,xform,gui.focus_inv_xform); @@ -1979,17 +1979,17 @@ void Viewport::_gui_remove_from_modal_stack(List<Control*>::Element *MI,ObjectID } } -void Viewport::_gui_force_drag(const Variant& p_data,Control *p_control) { +void Viewport::_gui_force_drag(Control *p_base, const Variant& p_data, Control *p_control) { gui.drag_data=p_data; gui.mouse_focus=NULL; if (p_control) { - _gui_set_drag_preview(p_control); + _gui_set_drag_preview(p_base,p_control); } } -void Viewport::_gui_set_drag_preview(Control *p_control) { +void Viewport::_gui_set_drag_preview(Control *p_base, Control *p_control) { ERR_FAIL_NULL(p_control); ERR_FAIL_COND( !((Object*)p_control)->cast_to<Control>()); @@ -2001,7 +2001,7 @@ void Viewport::_gui_set_drag_preview(Control *p_control) { } p_control->set_as_toplevel(true); p_control->set_pos(gui.last_mouse_pos); - add_child(p_control); //add as child of viewport + p_base->get_root_parent_control()->add_child(p_control); //add as child of viewport p_control->raise(); if (gui.drag_preview) { memdelete( gui.drag_preview ); |