0

[X11] Don't return closed windows from GetAcceleratedWidgetAtScreenPoint

This issue can manifest when quickly dragging tabs on tiling window
managers.

Bug: None
Change-Id: Ib160ce88b7fb4e3801489511f9b4433bbfe7d291
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6176746
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Maksim Sisov <msisov@igalia.com>
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1407147}
This commit is contained in:
Tom Anderson
2025-01-15 23:15:38 -08:00
committed by Chromium LUCI CQ
parent 308592ff1d
commit dcf2686ba2

@ -162,8 +162,15 @@ gfx::AcceleratedWidget X11ScreenOzone::GetAcceleratedWidgetAtScreenPoint(
const gfx::Point& point) const {
gfx::Point point_in_pixels =
gfx::ToFlooredPoint(PointDipToPx(GetAllDisplays(), point));
return static_cast<gfx::AcceleratedWidget>(
auto widget = static_cast<gfx::AcceleratedWidget>(
x11::GetWindowAtPoint(point_in_pixels));
auto* window = window_manager_->GetWindow(widget);
if (window && !window->IsVisible()) {
// The window cache may be out of sync with respect to recently changed
// window state. This can happen if the window was recently hidden.
return gfx::kNullAcceleratedWidget;
}
return widget;
}
gfx::AcceleratedWidget X11ScreenOzone::GetLocalProcessWidgetAtPoint(