|
@@ -502,17 +502,6 @@ void Viewport::_notification(int p_what) {
|
|
|
|
|
|
RS::get_singleton()->viewport_set_active(viewport, false);
|
|
|
RenderingServer::get_singleton()->viewport_set_parent_viewport(viewport, RID());
|
|
|
-
|
|
|
- } break;
|
|
|
- case NOTIFICATION_INTERNAL_PROCESS: {
|
|
|
- if (gui.tooltip_timer >= 0) {
|
|
|
- gui.tooltip_timer -= get_process_delta_time();
|
|
|
- if (gui.tooltip_timer < 0) {
|
|
|
- _gui_show_tooltip();
|
|
|
- set_process_internal(false);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
} break;
|
|
|
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: {
|
|
|
if (get_tree()->is_debugging_collisions_hint() && contact_2d_debug.is_valid()) {
|
|
@@ -1489,8 +1478,10 @@ void Viewport::_gui_sort_roots() {
|
|
|
|
|
|
void Viewport::_gui_cancel_tooltip() {
|
|
|
gui.tooltip_control = nullptr;
|
|
|
- gui.tooltip_timer = -1;
|
|
|
- set_process_internal(false);
|
|
|
+ if (gui.tooltip_timer.is_valid()) {
|
|
|
+ gui.tooltip_timer->release_connections();
|
|
|
+ gui.tooltip_timer = Ref<SceneTreeTimer>();
|
|
|
+ }
|
|
|
if (gui.tooltip_popup) {
|
|
|
gui.tooltip_popup->queue_delete();
|
|
|
gui.tooltip_popup = nullptr;
|
|
@@ -2139,10 +2130,15 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
|
|
|
}
|
|
|
|
|
|
if (can_tooltip && !is_tooltip_shown) {
|
|
|
+ if (gui.tooltip_timer.is_valid()) {
|
|
|
+ gui.tooltip_timer->release_connections();
|
|
|
+ gui.tooltip_timer = Ref<SceneTreeTimer>();
|
|
|
+ }
|
|
|
gui.tooltip_control = over;
|
|
|
gui.tooltip_pos = over->get_screen_transform().xform(pos);
|
|
|
- gui.tooltip_timer = gui.tooltip_delay;
|
|
|
- set_process_internal(true);
|
|
|
+ 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));
|
|
|
}
|
|
|
}
|
|
|
|