Serenity Operating System
at master 43 lines 985 B view raw
1/* 2 * Copyright (c) 2020, Alex McGrath <amk@amk.ie> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <LibGUI/Label.h> 10 11namespace GUI { 12 13class LinkLabel : public Label { 14 C_OBJECT(LinkLabel); 15 16public: 17 Function<void()> on_click; 18 19private: 20 explicit LinkLabel(DeprecatedString text = {}); 21 22 virtual void mousemove_event(MouseEvent&) override; 23 virtual void mousedown_event(MouseEvent&) override; 24 virtual void paint_event(PaintEvent&) override; 25 virtual void resize_event(ResizeEvent&) override; 26 virtual void leave_event(Core::Event&) override; 27 virtual void keydown_event(KeyEvent&) override; 28 virtual void context_menu_event(ContextMenuEvent&) override; 29 30 virtual void did_change_text() override; 31 32 void update_tooltip_if_needed(); 33 void setup_actions(); 34 void set_hovered(bool); 35 36 RefPtr<Menu> m_context_menu; 37 RefPtr<Action> m_open_action; 38 RefPtr<Action> m_copy_action; 39 40 bool m_hovered { false }; 41}; 42 43}