1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:38:12 +00:00

LibGUI: Make links only clickable where the text is

This commit is contained in:
Ben Wiederhake 2021-10-21 19:36:04 +02:00 committed by Linus Groh
parent ef1d247d79
commit 9bf6d51aec
2 changed files with 20 additions and 12 deletions

View file

@ -21,7 +21,6 @@ namespace GUI {
LinkLabel::LinkLabel(String text)
: Label(move(text))
{
set_override_cursor(Gfx::StandardCursor::Hand);
set_foreground_role(Gfx::ColorRole::Link);
set_focus_policy(FocusPolicy::TabFocus);
setup_actions();
@ -37,13 +36,29 @@ void LinkLabel::setup_actions()
m_copy_action = CommonActions::make_copy_action([this](auto&) { Clipboard::the().set_plain_text(text()); }, this);
}
void LinkLabel::set_hovered(bool hover)
{
if (hover == m_hovered)
return;
m_hovered = hover;
set_override_cursor(hover ? Gfx::StandardCursor::Hand : Gfx::StandardCursor::None);
update();
}
void LinkLabel::mousemove_event(MouseEvent& event)
{
static const int extra_target_width = 3;
set_hovered(event.position().x() <= font().width(text()) + extra_target_width);
}
void LinkLabel::mousedown_event(MouseEvent& event)
{
if (event.button() != MouseButton::Left)
return;
Label::mousedown_event(event);
if (on_click) {
if (m_hovered && on_click) {
on_click();
}
}
@ -69,18 +84,10 @@ void LinkLabel::paint_event(PaintEvent& event)
painter.draw_focus_rect(text_rect(), palette().focus_outline());
}
void LinkLabel::enter_event(Core::Event& event)
{
Label::enter_event(event);
m_hovered = true;
update();
}
void LinkLabel::leave_event(Core::Event& event)
{
Label::leave_event(event);
m_hovered = false;
update();
set_hovered(false);
}
void LinkLabel::did_change_text()