summaryrefslogtreecommitdiffstats
path: root/scene
diff options
context:
space:
mode:
Diffstat (limited to 'scene')
-rw-r--r--scene/main/viewport.cpp26
-rw-r--r--scene/resources/visual_shader.cpp1
2 files changed, 13 insertions, 14 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index e70407f36e..b66cfb516a 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -1931,21 +1931,19 @@ 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>();
+ // Reset the timer if the mouse has moved more than 5 pixels or has entered a new control.
+ if (!is_tooltip_shown && over->can_process()) {
+ Vector2 new_tooltip_pos = over->get_screen_transform().xform(pos);
+ if (over != gui.tooltip_control || gui.tooltip_pos.distance_squared_to(new_tooltip_pos) > 25) {
+ 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));
}
}
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 847867fa4d..7c1adeac96 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -3167,6 +3167,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_BOOLEAN, "output_is_srgb", "OUTPUT_IS_SRGB" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection_matrix", "PROJECTION_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "roughness", "ROUGHNESS" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_2D, "screen_uv", "SCREEN_UV" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "specular", "SPECULAR_LIGHT" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_2D, "uv", "UV" },