Browse Source

Dismiss currently visible or upcoming tooltips when pressing Escape

This is standard UI behavior in most applications out there.
Hugo Locurcio 2 years ago
parent
commit
6307b0be3c
1 changed files with 12 additions and 0 deletions
  1. 12 0
      scene/main/viewport.cpp

+ 12 - 0
scene/main/viewport.cpp

@@ -2184,6 +2184,18 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
 			return;
 			return;
 		}
 		}
 
 
+		if (p_event->is_action_pressed("ui_cancel")) {
+			// Cancel tooltip timer or hide tooltip when pressing Escape (this is standard behavior in most applications).
+			_gui_cancel_tooltip();
+			if (gui.tooltip_popup) {
+				// If a tooltip was hidden, prevent other actions associated with `ui_cancel` from occurring.
+				// For instance, this prevents the node from being deselected when pressing Escape
+				// to hide a documentation tooltip in the inspector.
+				set_input_as_handled();
+				return;
+			}
+		}
+
 		if (gui.key_focus && !gui.key_focus->is_visible_in_tree()) {
 		if (gui.key_focus && !gui.key_focus->is_visible_in_tree()) {
 			gui.key_focus->release_focus();
 			gui.key_focus->release_focus();
 		}
 		}