diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index ea09b15c67d..2d3aa66f2cd 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -2195,6 +2195,18 @@ void Viewport::_gui_input_event(Ref p_event) { 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()) { gui.key_focus->release_focus(); }