From 6e9a0b0621926edc1aa2a0b608d64ada74056892 Mon Sep 17 00:00:00 2001 From: clavin Date: Fri, 28 Jan 2022 14:37:45 -0700 Subject: [PATCH 1/2] fix: WCO window hover on window controls --- .../electron_desktop_window_tree_host_win.cc | 17 +++++++++++++++++ .../win/electron_desktop_window_tree_host_win.h | 1 + 2 files changed, 18 insertions(+) diff --git a/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc b/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc index 03d0846c7f8f5..a8a43c34383c6 100644 --- a/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc +++ b/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc @@ -99,4 +99,21 @@ bool ElectronDesktopWindowTreeHostWin::GetClientAreaInsets( return false; } +bool ElectronDesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { + // Call the default implementation of this method to get the event to its + // proper handler. + bool handled = this->views::DesktopWindowTreeHostWin::HandleMouseEvent(event); + + // On WCO-enabled windows, we need to mark non-client mouse moved events as + // handled so they don't incorrectly propogate back to the OS. + if (native_window_view_->IsWindowControlsOverlayEnabled() && + event->type() == ui::ET_MOUSE_MOVED && + (event->flags() & ui::EF_IS_NON_CLIENT) != 0) { + event->SetHandled(); + handled = true; + } + + return handled; +} + } // namespace electron diff --git a/shell/browser/ui/win/electron_desktop_window_tree_host_win.h b/shell/browser/ui/win/electron_desktop_window_tree_host_win.h index 3fd831aae1ed0..8c7be1175a193 100644 --- a/shell/browser/ui/win/electron_desktop_window_tree_host_win.h +++ b/shell/browser/ui/win/electron_desktop_window_tree_host_win.h @@ -36,6 +36,7 @@ class ElectronDesktopWindowTreeHostWin bool GetDwmFrameInsetsInPixels(gfx::Insets* insets) const override; bool GetClientAreaInsets(gfx::Insets* insets, HMONITOR monitor) const override; + bool HandleMouseEvent(ui::MouseEvent* event) override; private: NativeWindowViews* native_window_view_; // weak ref From a69b9198ba17d9c87d5d6e9fa6538e9a5b833ec9 Mon Sep 17 00:00:00 2001 From: Calvin Date: Tue, 1 Feb 2022 18:38:01 -0800 Subject: [PATCH 2/2] Update shell/browser/ui/win/electron_desktop_window_tree_host_win.cc Co-authored-by: Robo --- shell/browser/ui/win/electron_desktop_window_tree_host_win.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc b/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc index a8a43c34383c6..16e71fac12b39 100644 --- a/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc +++ b/shell/browser/ui/win/electron_desktop_window_tree_host_win.cc @@ -102,7 +102,7 @@ bool ElectronDesktopWindowTreeHostWin::GetClientAreaInsets( bool ElectronDesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { // Call the default implementation of this method to get the event to its // proper handler. - bool handled = this->views::DesktopWindowTreeHostWin::HandleMouseEvent(event); + bool handled = views::DesktopWindowTreeHostWin::HandleMouseEvent(event); // On WCO-enabled windows, we need to mark non-client mouse moved events as // handled so they don't incorrectly propogate back to the OS.