LibGUI: Don't leak every tooltip window ever :^)

This commit is contained in:
Andreas Kling 2020-02-15 01:27:37 +01:00
parent dcb0766d3f
commit 10ccc9e11c
Notes: sideshowbarker 2024-07-19 09:19:35 +09:00
2 changed files with 13 additions and 10 deletions

View File

@ -106,7 +106,18 @@ Action* Application::action_for_key_event(const KeyEvent& event)
}
class Application::TooltipWindow final : public Window {
C_OBJECT(TooltipWindow);
public:
void set_tooltip(const StringView& tooltip)
{
// FIXME: Add some kind of GLabel auto-sizing feature.
int text_width = m_label->font().width(tooltip);
set_rect(100, 100, text_width + 10, m_label->font().glyph_height() + 8);
m_label->set_text(tooltip);
}
private:
TooltipWindow()
{
set_window_type(WindowType::Tooltip);
@ -119,21 +130,13 @@ public:
set_main_widget(m_label);
}
void set_tooltip(const StringView& tooltip)
{
// FIXME: Add some kind of GLabel auto-sizing feature.
int text_width = m_label->font().width(tooltip);
set_rect(100, 100, text_width + 10, m_label->font().glyph_height() + 8);
m_label->set_text(tooltip);
}
RefPtr<Label> m_label;
};
void Application::show_tooltip(const StringView& tooltip, const Gfx::Point& screen_location)
{
if (!m_tooltip_window) {
m_tooltip_window = new TooltipWindow;
m_tooltip_window = TooltipWindow::construct();
m_tooltip_window->set_double_buffering_enabled(false);
}
m_tooltip_window->set_tooltip(tooltip);

View File

@ -77,7 +77,7 @@ private:
RefPtr<Gfx::PaletteImpl> m_system_palette;
HashMap<Shortcut, Action*> m_global_shortcut_actions;
class TooltipWindow;
TooltipWindow* m_tooltip_window { nullptr };
RefPtr<TooltipWindow> m_tooltip_window;
bool m_quit_when_last_window_deleted { true };
String m_invoked_as;
Vector<String> m_args;