Parcourir la source

Fixed the order of input, reverts #4384, closes #5361

Juan Linietsky il y a 9 ans
Parent
commit
ec94dd7eee
2 fichiers modifiés avec 2 ajouts et 10 suppressions
  1. 1 1
      scene/gui/base_button.cpp
  2. 1 9
      scene/main/viewport.cpp

+ 1 - 1
scene/gui/base_button.cpp

@@ -416,7 +416,7 @@ Ref<ShortCut> BaseButton:: get_shortcut() const {
 
 void BaseButton::_unhandled_input(InputEvent p_event) {
 
-	if (!is_disabled() && is_visible() && shortcut.is_valid() && shortcut->is_shortcut(p_event)) {
+	if (!is_disabled() && is_visible() && p_event.is_pressed() && shortcut.is_valid() && shortcut->is_shortcut(p_event)) {
 
 		if (get_viewport()->get_modal_stack_top() && !get_viewport()->get_modal_stack_top()->is_a_parent_of(this))
 			return; //ignore because of modal window

+ 1 - 9
scene/main/viewport.cpp

@@ -2060,14 +2060,6 @@ void Viewport::_gui_input_event(InputEvent p_event) {
 
 
 			if (gui.key_focus && !gui.key_focus->is_visible()) {
-				Node *c=gui.key_focus;
-				String p;
-				while(c) {
-					p=c->get_type()+"/"+p;
-					c=c->get_parent();
-				}
-				print_line(p);
-				//key focus must always be visible
 				gui.key_focus->release_focus();
 			}
 
@@ -2410,8 +2402,8 @@ void Viewport::input(const InputEvent& p_event) {
 	ERR_FAIL_COND(!is_inside_tree());
 
 
+	get_tree()->_call_input_pause(input_group,"_input",p_event); //not a bug, must happen before GUI, order is _input -> gui input -> _unhandled input
 	_gui_input_event(p_event);
-	get_tree()->_call_input_pause(input_group,"_input",p_event);
 	//get_tree()->call_group(SceneTree::GROUP_CALL_REVERSE|SceneTree::GROUP_CALL_REALTIME|SceneTree::GROUP_CALL_MULIILEVEL,gui_input_group,"_gui_input",p_event); //special one for GUI, as controls use their own process check
 }