Skip to content

Commit

Permalink
Fix tooltip appearing in old place, on movement
Browse files Browse the repository at this point in the history
Fixes tooltip appearing in editor on old position of mouse.
Fixes tooltip appearing even if mouse is in steady motion (now accepts max 5 px movement).
  • Loading branch information
aXu-AP committed Oct 21, 2024
1 parent 44fa552 commit 5ccbdcd
Showing 1 changed file with 11 additions and 12 deletions.
23 changes: 11 additions & 12 deletions scene/main/viewport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1933,19 +1933,18 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {

// If the tooltip timer isn't running, start it.
// Otherwise, only reset the timer if the mouse has moved more than 5 pixels.
if (!is_tooltip_shown && over->can_process() &&
(gui.tooltip_timer.is_null() ||
Math::is_zero_approx(gui.tooltip_timer->get_time_left()) ||
mm->get_relative().length() > 5.0)) {
if (gui.tooltip_timer.is_valid()) {
gui.tooltip_timer->release_connections();
gui.tooltip_timer = Ref<SceneTreeTimer>();
if (!is_tooltip_shown && over->can_process()) {
Vector2 new_tooltip_pos = over->get_screen_transform().xform(pos);
if (gui.tooltip_pos.distance_squared_to(new_tooltip_pos) > 25 || over != gui.tooltip_control) {
if (gui.tooltip_timer.is_valid()) {
gui.tooltip_timer->release_connections();
}
gui.tooltip_control = over;
gui.tooltip_pos = new_tooltip_pos;
gui.tooltip_timer = get_tree()->create_timer(gui.tooltip_delay);
gui.tooltip_timer->set_ignore_time_scale(true);
gui.tooltip_timer->connect("timeout", callable_mp(this, &Viewport::_gui_show_tooltip));
}
gui.tooltip_control = over;
gui.tooltip_pos = over->get_screen_transform().xform(pos);
gui.tooltip_timer = get_tree()->create_timer(gui.tooltip_delay);
gui.tooltip_timer->set_ignore_time_scale(true);
gui.tooltip_timer->connect("timeout", callable_mp(this, &Viewport::_gui_show_tooltip));
}
}

Expand Down

0 comments on commit 5ccbdcd

Please sign in to comment.