mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:57:36 +00:00
LibGUI: Don't leak every tooltip window ever :^)
This commit is contained in:
parent
dcb0766d3f
commit
10ccc9e11c
2 changed files with 13 additions and 10 deletions
|
@ -106,7 +106,18 @@ Action* Application::action_for_key_event(const KeyEvent& event)
|
||||||
}
|
}
|
||||||
|
|
||||||
class Application::TooltipWindow final : public Window {
|
class Application::TooltipWindow final : public Window {
|
||||||
|
C_OBJECT(TooltipWindow);
|
||||||
|
|
||||||
public:
|
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()
|
TooltipWindow()
|
||||||
{
|
{
|
||||||
set_window_type(WindowType::Tooltip);
|
set_window_type(WindowType::Tooltip);
|
||||||
|
@ -119,21 +130,13 @@ public:
|
||||||
set_main_widget(m_label);
|
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;
|
RefPtr<Label> m_label;
|
||||||
};
|
};
|
||||||
|
|
||||||
void Application::show_tooltip(const StringView& tooltip, const Gfx::Point& screen_location)
|
void Application::show_tooltip(const StringView& tooltip, const Gfx::Point& screen_location)
|
||||||
{
|
{
|
||||||
if (!m_tooltip_window) {
|
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_double_buffering_enabled(false);
|
||||||
}
|
}
|
||||||
m_tooltip_window->set_tooltip(tooltip);
|
m_tooltip_window->set_tooltip(tooltip);
|
||||||
|
|
|
@ -77,7 +77,7 @@ private:
|
||||||
RefPtr<Gfx::PaletteImpl> m_system_palette;
|
RefPtr<Gfx::PaletteImpl> m_system_palette;
|
||||||
HashMap<Shortcut, Action*> m_global_shortcut_actions;
|
HashMap<Shortcut, Action*> m_global_shortcut_actions;
|
||||||
class TooltipWindow;
|
class TooltipWindow;
|
||||||
TooltipWindow* m_tooltip_window { nullptr };
|
RefPtr<TooltipWindow> m_tooltip_window;
|
||||||
bool m_quit_when_last_window_deleted { true };
|
bool m_quit_when_last_window_deleted { true };
|
||||||
String m_invoked_as;
|
String m_invoked_as;
|
||||||
Vector<String> m_args;
|
Vector<String> m_args;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue