mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-14 13:32:23 +00:00
UI: Inform WebContent when the mouse leaves the WebView widget
Previously, when the mouse left the WebView, the currently hovered node would remain hovered (including the scroll bar). This felt a bit awkward and is not how other browsers behave.
This commit is contained in:
parent
8303a558f1
commit
bc4112bf18
Notes:
github-actions[bot]
2025-07-28 03:39:09 +00:00
Author: https://github.com/trflynn89
Commit: bc4112bf18
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5615
3 changed files with 20 additions and 1 deletions
|
@ -137,7 +137,7 @@ struct HideCursor {
|
||||||
[self setWebViewCallbacks];
|
[self setWebViewCallbacks];
|
||||||
|
|
||||||
auto* area = [[NSTrackingArea alloc] initWithRect:[self bounds]
|
auto* area = [[NSTrackingArea alloc] initWithRect:[self bounds]
|
||||||
options:NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect | NSTrackingMouseMoved
|
options:NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved
|
||||||
owner:self
|
owner:self
|
||||||
userInfo:nil];
|
userInfo:nil];
|
||||||
[self addTrackingArea:area];
|
[self addTrackingArea:area];
|
||||||
|
@ -1574,6 +1574,14 @@ static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)mouseExited:(NSEvent*)event
|
||||||
|
{
|
||||||
|
static constexpr Web::DevicePixelPoint point { NumericLimits<Web::DevicePixels::Type>::max(), NumericLimits<Web::DevicePixels::Type>::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
|
- (void)mouseMoved:(NSEvent*)event
|
||||||
{
|
{
|
||||||
auto mouse_event = Ladybird::ns_event_to_mouse_event(Web::MouseEvent::Type::MouseMove, event, self, Web::UIEvents::MouseButton::None);
|
auto mouse_event = Ladybird::ns_event_to_mouse_event(Web::MouseEvent::Type::MouseMove, event, self, Web::UIEvents::MouseButton::None);
|
||||||
|
|
|
@ -402,6 +402,16 @@ QVariant WebContentView::inputMethodQuery(Qt::InputMethodQuery) const
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebContentView::leaveEvent(QEvent* event)
|
||||||
|
{
|
||||||
|
static constexpr QPointF point { NumericLimits<qreal>::max(), NumericLimits<qreal>::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)
|
void WebContentView::mouseMoveEvent(QMouseEvent* event)
|
||||||
{
|
{
|
||||||
if (!m_tooltip_override) {
|
if (!m_tooltip_override) {
|
||||||
|
|
|
@ -59,6 +59,7 @@ public:
|
||||||
|
|
||||||
virtual void paintEvent(QPaintEvent*) override;
|
virtual void paintEvent(QPaintEvent*) override;
|
||||||
virtual void resizeEvent(QResizeEvent*) override;
|
virtual void resizeEvent(QResizeEvent*) override;
|
||||||
|
virtual void leaveEvent(QEvent* event) override;
|
||||||
virtual void mouseMoveEvent(QMouseEvent*) override;
|
virtual void mouseMoveEvent(QMouseEvent*) override;
|
||||||
virtual void mousePressEvent(QMouseEvent*) override;
|
virtual void mousePressEvent(QMouseEvent*) override;
|
||||||
virtual void mouseReleaseEvent(QMouseEvent*) override;
|
virtual void mouseReleaseEvent(QMouseEvent*) override;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue