diff --git a/Userland/Libraries/LibGUI/Application.cpp b/Userland/Libraries/LibGUI/Application.cpp index 2f6afdad129..58e80f23903 100644 --- a/Userland/Libraries/LibGUI/Application.cpp +++ b/Userland/Libraries/LibGUI/Application.cpp @@ -93,7 +93,7 @@ Application::Application(int argc, char** argv, Core::EventLoop::MakeInspectable } m_tooltip_show_timer = Core::Timer::create_single_shot(700, [this] { - tooltip_show_timer_did_fire(); + request_tooltip_show(); }); m_tooltip_hide_timer = Core::Timer::create_single_shot(50, [this] { @@ -146,7 +146,7 @@ void Application::show_tooltip(String tooltip, const Widget* tooltip_source_widg m_tooltip_window->set_tooltip(move(tooltip)); if (m_tooltip_window->is_visible()) { - tooltip_show_timer_did_fire(); + request_tooltip_show(); m_tooltip_show_timer->stop(); m_tooltip_hide_timer->stop(); } else { @@ -155,6 +155,20 @@ void Application::show_tooltip(String tooltip, const Widget* tooltip_source_widg } } +void Application::show_tooltip_immediately(String tooltip, const Widget* tooltip_source_widget) +{ + m_tooltip_source_widget = tooltip_source_widget; + if (!m_tooltip_window) { + m_tooltip_window = TooltipWindow::construct(); + m_tooltip_window->set_double_buffering_enabled(false); + } + m_tooltip_window->set_tooltip(move(tooltip)); + + request_tooltip_show(); + m_tooltip_show_timer->stop(); + m_tooltip_hide_timer->stop(); +} + void Application::hide_tooltip() { m_tooltip_show_timer->stop(); @@ -194,7 +208,7 @@ Gfx::Palette Application::palette() const return Palette(*m_palette); } -void Application::tooltip_show_timer_did_fire() +void Application::request_tooltip_show() { VERIFY(m_tooltip_window); Gfx::IntRect desktop_rect = Desktop::the().rect(); diff --git a/Userland/Libraries/LibGUI/Application.h b/Userland/Libraries/LibGUI/Application.h index 7ce9379e78e..8847c35ae5f 100644 --- a/Userland/Libraries/LibGUI/Application.h +++ b/Userland/Libraries/LibGUI/Application.h @@ -36,6 +36,7 @@ public: void unregister_global_shortcut_action(Badge, Action&); void show_tooltip(String, const Widget* tooltip_source_widget); + void show_tooltip_immediately(String, const Widget* tooltip_source_widget); void hide_tooltip(); Widget* tooltip_source_widget() { return m_tooltip_source_widget; }; @@ -85,7 +86,7 @@ private: virtual void event(Core::Event&) override; - void tooltip_show_timer_did_fire(); + void request_tooltip_show(); void tooltip_hide_timer_did_fire(); void set_drag_hovered_widget_impl(Widget*, const Gfx::IntPoint& = {}, Vector = {});