diff --git a/UI/AppKit/Interface/LadybirdWebView.mm b/UI/AppKit/Interface/LadybirdWebView.mm index ec441f07d6d..9bbbfd83bf4 100644 --- a/UI/AppKit/Interface/LadybirdWebView.mm +++ b/UI/AppKit/Interface/LadybirdWebView.mm @@ -137,7 +137,7 @@ struct HideCursor { [self setWebViewCallbacks]; auto* area = [[NSTrackingArea alloc] initWithRect:[self bounds] - options:NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect | NSTrackingMouseMoved + options:NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved owner:self userInfo:nil]; [self addTrackingArea:area]; @@ -1574,6 +1574,14 @@ static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_ return YES; } +- (void)mouseExited:(NSEvent*)event +{ + static constexpr Web::DevicePixelPoint point { NumericLimits::max(), NumericLimits::max() }; + + Web::MouseEvent mouse_event { Web::MouseEvent::Type::MouseMove, point, point, Web::UIEvents::MouseButton::None, Web::UIEvents::MouseButton::None, Web::UIEvents::KeyModifier::Mod_None, 0, 0, nullptr }; + m_web_view_bridge->enqueue_input_event(move(mouse_event)); +} + - (void)mouseMoved:(NSEvent*)event { auto mouse_event = Ladybird::ns_event_to_mouse_event(Web::MouseEvent::Type::MouseMove, event, self, Web::UIEvents::MouseButton::None); diff --git a/UI/Qt/WebContentView.cpp b/UI/Qt/WebContentView.cpp index 34425a811bd..6563e9be1f0 100644 --- a/UI/Qt/WebContentView.cpp +++ b/UI/Qt/WebContentView.cpp @@ -402,6 +402,16 @@ QVariant WebContentView::inputMethodQuery(Qt::InputMethodQuery) const return QVariant(); } +void WebContentView::leaveEvent(QEvent* event) +{ + static constexpr QPointF point { NumericLimits::max(), NumericLimits::max() }; + + QMouseEvent mouse_event { QEvent::Type::MouseMove, point, point, Qt::MouseButton::NoButton, Qt::MouseButton::NoButton, Qt::KeyboardModifier::NoModifier }; + enqueue_native_event(Web::MouseEvent::Type::MouseMove, mouse_event); + + QWidget::leaveEvent(event); +} + void WebContentView::mouseMoveEvent(QMouseEvent* event) { if (!m_tooltip_override) { diff --git a/UI/Qt/WebContentView.h b/UI/Qt/WebContentView.h index b59439d284a..3e83e928d58 100644 --- a/UI/Qt/WebContentView.h +++ b/UI/Qt/WebContentView.h @@ -59,6 +59,7 @@ public: virtual void paintEvent(QPaintEvent*) override; virtual void resizeEvent(QResizeEvent*) override; + virtual void leaveEvent(QEvent* event) override; virtual void mouseMoveEvent(QMouseEvent*) override; virtual void mousePressEvent(QMouseEvent*) override; virtual void mouseReleaseEvent(QMouseEvent*) override;