Browse Source

-restrict gui root from being removed while performing input, fixes #2578

reduz 9 years ago
parent
commit
2f19260fb7
2 changed files with 6 additions and 0 deletions
  1. 5 0
      scene/gui/control.cpp
  2. 1 0
      scene/main/node.cpp

+ 5 - 0
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

+ 1 - 0
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