Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: touch events not recognized by WCO on windows (#35174)
* fix: touch events not recognized by WCO on windows * chore: update patches Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
- Loading branch information
1 parent
6ff154c
commit ab426d5
Showing
4 changed files
with
99 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
76 changes: 76 additions & 0 deletions
76
patches/chromium/chore_allow_chromium_to_handle_synthetic_mouse_events_for_touch.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: deepak1556 <hop2deep@gmail.com> | ||
Date: Fri, 29 Jul 2022 00:29:35 +0900 | ||
Subject: chore: allow chromium to handle synthetic mouse events for touch | ||
|
||
With WCO, allow chromium to handle synthetic mouse events generated for touch | ||
actions in the non-client caption area. | ||
|
||
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc | ||
index f6b37bdec2343d45447b419aeadbe2aa19493c3c..bdbf7153f27376bd68459f9cb480bff7485c9e98 100644 | ||
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc | ||
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc | ||
@@ -1169,6 +1169,10 @@ void DesktopWindowTreeHostWin::HandleWindowScaleFactorChanged( | ||
} | ||
} | ||
|
||
+bool DesktopWindowTreeHostWin::HandleMouseEventForCaption(UINT message) const { | ||
+ return false; | ||
+} | ||
+ | ||
DesktopNativeCursorManager* | ||
DesktopWindowTreeHostWin::GetSingletonDesktopNativeCursorManager() { | ||
return new DesktopNativeCursorManagerWin(); | ||
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h | ||
index 0aae49ec83b88057434af5bbfb54b10e53469918..058e5dc978e76a71fa02dc9e275592f3c39befea 100644 | ||
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h | ||
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h | ||
@@ -263,6 +263,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin | ||
void HandleWindowSizeChanging() override; | ||
void HandleWindowSizeUnchanged() override; | ||
void HandleWindowScaleFactorChanged(float window_scale_factor) override; | ||
+ bool HandleMouseEventForCaption(UINT message) const override; | ||
|
||
Widget* GetWidget(); | ||
const Widget* GetWidget() const; | ||
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc | ||
index 7c7952755317a8069becfff58ca5ec89e2266ce4..6496933a9c84c337b6ba25276badf7728eeabdfb 100644 | ||
--- a/ui/views/win/hwnd_message_handler.cc | ||
+++ b/ui/views/win/hwnd_message_handler.cc | ||
@@ -3129,15 +3129,19 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, | ||
SetMsgHandled(FALSE); | ||
// We must let Windows handle the caption buttons if it's drawing them, or | ||
// they won't work. | ||
+ bool simulate_mouse_event_for_caption = false; | ||
if (delegate_->GetFrameMode() == FrameMode::SYSTEM_DRAWN && | ||
(hittest == HTCLOSE || hittest == HTMINBUTTON || | ||
hittest == HTMAXBUTTON)) { | ||
- SetMsgHandled(FALSE); | ||
+ simulate_mouse_event_for_caption = | ||
+ delegate_->HandleMouseEventForCaption(message); | ||
+ if (!simulate_mouse_event_for_caption) | ||
+ SetMsgHandled(FALSE); | ||
} | ||
// Let resize events fall through. Ignore everything else, as we're either | ||
// letting Windows handle it above or we've already handled the equivalent | ||
// touch message. | ||
- if (!IsHitTestOnResizeHandle(hittest)) | ||
+ if (!IsHitTestOnResizeHandle(hittest) && !simulate_mouse_event_for_caption) | ||
return 0; | ||
} | ||
|
||
diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h | ||
index 5dbb192d0840ca0ded61397c399b774a8cb05cce..098a9c3140e9e140fdc8f0dc9cf4e8ec84451221 100644 | ||
--- a/ui/views/win/hwnd_message_handler_delegate.h | ||
+++ b/ui/views/win/hwnd_message_handler_delegate.h | ||
@@ -258,6 +258,10 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate { | ||
// Called when the window scale factor has changed. | ||
virtual void HandleWindowScaleFactorChanged(float window_scale_factor) = 0; | ||
|
||
+ // Called when synthetic mouse event is generated for touch event on | ||
+ // caption buttons. | ||
+ virtual bool HandleMouseEventForCaption(UINT message) const = 0; | ||
+ | ||
protected: | ||
virtual ~HWNDMessageHandlerDelegate() = default; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters