From 7babe5ade6050367d455623b67c86940ecca4604 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 26 Dec 2020 13:17:57 +0100 Subject: [PATCH] LibGUI: Set LinkLabel tooltip if text can't fit the widget We were setting a tooltip when the text overflowed the *window* width, make this more general by basing it on the *widget* width. --- Libraries/LibGUI/LinkLabel.cpp | 26 +++++++++++++++++--------- Libraries/LibGUI/LinkLabel.h | 5 ++++- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Libraries/LibGUI/LinkLabel.cpp b/Libraries/LibGUI/LinkLabel.cpp index a39bd0e3c3..cf40f94082 100644 --- a/Libraries/LibGUI/LinkLabel.cpp +++ b/Libraries/LibGUI/LinkLabel.cpp @@ -39,8 +39,9 @@ LinkLabel::LinkLabel(String text) set_foreground_role(Gfx::ColorRole::Link); } -void LinkLabel::mousedown_event(MouseEvent&) +void LinkLabel::mousedown_event(MouseEvent& event) { + Label::mousedown_event(event); if (on_click) { on_click(); } @@ -56,32 +57,39 @@ void LinkLabel::paint_event(PaintEvent& event) Widget::palette().link()); } -void LinkLabel::enter_event(Core::Event&) +void LinkLabel::enter_event(Core::Event& event) { + Label::enter_event(event); m_hovered = true; update(); } -void LinkLabel::leave_event(Core::Event&) +void LinkLabel::leave_event(Core::Event& event) { + Label::leave_event(event); m_hovered = false; update(); } -void LinkLabel::second_paint_event(PaintEvent&) +void LinkLabel::did_change_text() { - if (window()->width() < font().width(text())) { - set_tooltip(text()); - } + Label::did_change_text(); + update_tooltip_if_needed(); } -void LinkLabel::resize_event(ResizeEvent&) +void LinkLabel::update_tooltip_if_needed() { - if (window()->width() < font().width(text())) { + if (width() < font().width(text())) { set_tooltip(text()); } else { set_tooltip({}); } } +void LinkLabel::resize_event(ResizeEvent& event) +{ + Label::resize_event(event); + update_tooltip_if_needed(); +} + } diff --git a/Libraries/LibGUI/LinkLabel.h b/Libraries/LibGUI/LinkLabel.h index 923eb91bda..41b924a772 100644 --- a/Libraries/LibGUI/LinkLabel.h +++ b/Libraries/LibGUI/LinkLabel.h @@ -42,10 +42,13 @@ private: virtual void mousedown_event(MouseEvent&) override; virtual void paint_event(PaintEvent&) override; virtual void resize_event(ResizeEvent&) override; - virtual void second_paint_event(PaintEvent&) override; virtual void enter_event(Core::Event&) override; virtual void leave_event(Core::Event&) override; + virtual void did_change_text() override; + + void update_tooltip_if_needed(); + bool m_hovered { false }; };