mirror of https://github.com/electron/electron
77 lines
3.8 KiB
Diff
77 lines
3.8 KiB
Diff
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 f1a1dcead614367dfee39dce22e30e386d9d2054..d219e9a98ed57de27d8c05dd3504bdd3ae4335c9 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
|
|
@@ -1219,6 +1219,10 @@ void DesktopWindowTreeHostWin::HandleHeadlessWindowBoundsChanged(
|
|
window()->SetProperty(aura::client::kHeadlessBoundsKey, bounds);
|
|
}
|
|
|
|
+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 8d5b01098915dd8e27ed047fa3a250169157a382..797670a6d0a34f25ee5d6f266bb2a1f547970e1f 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
|
|
@@ -261,6 +261,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin
|
|
void HandleWindowSizeUnchanged() override;
|
|
void HandleWindowScaleFactorChanged(float window_scale_factor) override;
|
|
void HandleHeadlessWindowBoundsChanged(const gfx::Rect& bounds) 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 e65fcbc6be98d15f5daca87cfc32671628f1e9ab..088fbc8a376139c1497461fa072ece401563602d 100644
|
|
--- a/ui/views/win/hwnd_message_handler.cc
|
|
+++ b/ui/views/win/hwnd_message_handler.cc
|
|
@@ -3122,15 +3122,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 fde18715e33ee67f64740ebda7c641954360483c..cf1ea75f8e9dd1d95045736959c4f3ca1a27a1ab 100644
|
|
--- a/ui/views/win/hwnd_message_handler_delegate.h
|
|
+++ b/ui/views/win/hwnd_message_handler_delegate.h
|
|
@@ -255,6 +255,10 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate {
|
|
// Called when the headless window bounds has changed.
|
|
virtual void HandleHeadlessWindowBoundsChanged(const gfx::Rect& bounds) = 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;
|
|
};
|