fix: release mouse buttons on focus loss on Wayland (#48756)

* fix: release mouse buttons on focus loss on Wayland

Co-authored-by: Mitchell Cohen <mitch.cohen@me.com>

* chore: e patches all

* chore: fix patch shear in patches/chromium/.patches

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Mitchell Cohen <mitch.cohen@me.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
trop[bot]
2025-11-07 10:37:58 +01:00
committed by GitHub
parent 6a303cb19f
commit 3ecddde010
2 changed files with 35 additions and 0 deletions

View File

@@ -147,3 +147,4 @@ band-aid_over_an_issue_with_using_deprecated_nsopenpanel_api.patch
disable_nsautofillheuristiccontroller_on_macos_26.patch
expose_referrerscriptinfo_hostdefinedoptionsindex.patch
inspectorpageagent_provisional_frame_speculative_fix.patch
fix_release_mouse_buttons_on_focus_loss_on_wayland.patch

View File

@@ -0,0 +1,34 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mitchell COhen <mitch.cohen@me.com>
Date: Sun, 2 Nov 2025 15:30:56 -0500
Subject: fix: release mouse buttons on focus loss on Wayland
Fixes an issue where the mouse flags would get stuck if you right-click
the CSD titlebar in Wayland.
Bug: 455147429
Change-Id: I9f5a9f395b3c1d85094a40a92d40691a897dbd05
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7091872
Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Kramer Ge <fangzhoug@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1538048}
diff --git a/ui/ozone/platform/wayland/host/wayland_event_source.cc b/ui/ozone/platform/wayland/host/wayland_event_source.cc
index 3ef7ad3369d458d56eb4e4702533005bc2de6261..44339caac5a2d818eb999786cd5093167c55a992 100644
--- a/ui/ozone/platform/wayland/host/wayland_event_source.cc
+++ b/ui/ozone/platform/wayland/host/wayland_event_source.cc
@@ -334,6 +334,13 @@ void WaylandEventSource::OnPointerFocusChanged(
// Save new pointer location.
pointer_location_ = location;
window_manager_->SetPointerFocusedWindow(window);
+ } else {
+ // The compositor may swallow the release event for any buttons that are
+ // pressed when the window loses focus, e.g. when right-clicking the
+ // titlebar to open the system menu on GNOME.
+ if (!connection_->IsDragInProgress()) {
+ ReleasePressedPointerButtons(window, ui::EventTimeForNow());
+ }
}
auto closure = focused ? base::NullCallback()