diff options
author | reduz <reduzio@gmail.com> | 2015-12-29 10:01:29 -0300 |
---|---|---|
committer | reduz <reduzio@gmail.com> | 2015-12-29 10:01:29 -0300 |
commit | 2f19260fb7b7479eab6ad905683cbef8126fc0e8 (patch) | |
tree | 52fbb441e7ccbc4e0b5f728c6fcbc8756014b28b /scene | |
parent | 45ad1024e12ffa6db0e56cb36c007dd212d5e37e (diff) |
-restrict gui root from being removed while performing input, fixes #2578
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/control.cpp | 5 | ||||
-rw-r--r-- | scene/main/node.cpp | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index ec4886a6ac..6e867c45b9 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -916,6 +916,7 @@ void Control::_window_show_tooltip() { void Control::_window_call_input(Control *p_control,const InputEvent& p_input) { + _block(); while(p_control) { @@ -932,6 +933,9 @@ void Control::_window_call_input(Control *p_control,const InputEvent& p_input) { break; p_control=p_control->data.parent; } + + _unblock(); + } void Control::_window_input_event(InputEvent p_event) { @@ -1067,6 +1071,7 @@ void Control::_window_input_event(InputEvent p_event) { Size2 pos = mpos; pos = window->focus_inv_xform.xform(pos); + window->mouse_over->drop_data(pos,window->drag_data); window->drag_data=Variant(); //change mouse accordingly diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 2b2a188e76..f5252cf446 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -802,6 +802,7 @@ void Node::remove_child(Node *p_child) { } ERR_FAIL_COND( idx==-1 ); + ERR_FAIL_COND( p_child->data.blocked > 0 ); //if (data.scene) { does not matter |