Przeglądaj źródła

LibVT: Show the hover hand cursor when hovering over hyperlinks :^)

Andreas Kling 5 lat temu
rodzic
commit
31ec4de0ee

+ 14 - 0
Libraries/LibVT/TerminalWidget.cpp

@@ -644,6 +644,10 @@ void TerminalWidget::mousemove_event(GUI::MouseEvent& event)
     if (attribute.href_id != m_hovered_href_id) {
         m_hovered_href_id = attribute.href_id;
         m_hovered_href = attribute.href;
+        if (!m_hovered_href.is_empty())
+            window()->set_override_cursor(GUI::StandardCursor::Hand);
+        else
+            window()->set_override_cursor(GUI::StandardCursor::None);
         update();
     }
 
@@ -656,6 +660,16 @@ void TerminalWidget::mousemove_event(GUI::MouseEvent& event)
         update();
 }
 
+void TerminalWidget::leave_event(Core::Event&)
+{
+    window()->set_override_cursor(GUI::StandardCursor::None);
+    bool should_update = !m_hovered_href.is_empty();
+    m_hovered_href = {};
+    m_hovered_href_id = {};
+    if (should_update)
+        update();
+}
+
 void TerminalWidget::mousewheel_event(GUI::MouseEvent& event)
 {
     if (!is_scrollable())

+ 1 - 0
Libraries/LibVT/TerminalWidget.h

@@ -101,6 +101,7 @@ private:
     virtual void focusout_event(Core::Event&) override;
     virtual void context_menu_event(GUI::ContextMenuEvent&) override;
     virtual void drop_event(GUI::DropEvent&) override;
+    virtual void leave_event(Core::Event&) override;
     virtual void did_change_font() override;
 
     // ^TerminalClient