Index: content/browser/renderer_host/legacy_render_widget_host_win.cc |
diff --git a/content/browser/renderer_host/legacy_render_widget_host_win.cc b/content/browser/renderer_host/legacy_render_widget_host_win.cc |
index 5126ad2bc2da97d1c829ad9f6913ecaeb5de0424..8dcdaf63c98cd899bbae46fbbcb7a77e848774ce 100644 |
--- a/content/browser/renderer_host/legacy_render_widget_host_win.cc |
+++ b/content/browser/renderer_host/legacy_render_widget_host_win.cc |
@@ -18,6 +18,7 @@ |
#include "ui/base/win/internal_constants.h" |
#include "ui/base/win/window_event_target.h" |
#include "ui/gfx/geometry/rect.h" |
+#include "ui/gfx/win/direct_manipulation.h" |
#include "ui/gfx/win/dpi.h" |
namespace content { |
@@ -75,6 +76,8 @@ HWND LegacyRenderWidgetHostHWND::GetParent() { |
void LegacyRenderWidgetHostHWND::Show() { |
::ShowWindow(hwnd(), SW_SHOW); |
+ if (direct_manipulation_helper_) |
+ direct_manipulation_helper_->Activate(hwnd()); |
} |
void LegacyRenderWidgetHostHWND::Hide() { |
@@ -86,6 +89,8 @@ void LegacyRenderWidgetHostHWND::SetBounds(const gfx::Rect& bounds) { |
::SetWindowPos(hwnd(), NULL, bounds_in_pixel.x(), bounds_in_pixel.y(), |
bounds_in_pixel.width(), bounds_in_pixel.height(), |
SWP_NOREDRAW); |
+ if (direct_manipulation_helper_) |
+ direct_manipulation_helper_->SetBounds(bounds_in_pixel); |
} |
void LegacyRenderWidgetHostHWND::OnFinalMessage(HWND hwnd) { |
@@ -126,6 +131,13 @@ bool LegacyRenderWidgetHostHWND::Init() { |
CHILDID_SELF); |
} |
+ // Direct Manipulation is enabled on Windows 10+. The CreateInstance function |
+ // returns NULL if Direct Manipulation is not available. |
+ direct_manipulation_helper_ = |
+ gfx::win::DirectManipulationHelper::CreateInstance(); |
+ if (direct_manipulation_helper_) |
+ direct_manipulation_helper_->Initialize(hwnd()); |
+ |
return !!SUCCEEDED(hr); |
} |
@@ -242,6 +254,12 @@ LRESULT LegacyRenderWidgetHostHWND::OnMouseRange(UINT message, |
handled = TRUE; |
} |
} |
+ |
+ if (direct_manipulation_helper_ && |
+ (message == WM_MOUSEWHEEL || message == WM_MOUSEHWHEEL)) { |
+ direct_manipulation_helper_->HandleMouseWheel(hwnd(), message, w_param, |
+ l_param); |
+ } |
return ret; |
} |