| Index: ui/views/win/hwnd_message_handler.cc
|
| diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
|
| index 5cadce12e659ca63c5f77da150f69f00405552f3..ab7268013cc2509a555e3662762eeb235300c50d 100644
|
| --- a/ui/views/win/hwnd_message_handler.cc
|
| +++ b/ui/views/win/hwnd_message_handler.cc
|
| @@ -32,6 +32,7 @@
|
| #include "ui/gfx/path.h"
|
| #include "ui/gfx/path_win.h"
|
| #include "ui/gfx/screen.h"
|
| +#include "ui/gfx/win/direct_manipulation.h"
|
| #include "ui/gfx/win/dpi.h"
|
| #include "ui/gfx/win/hwnd_util.h"
|
| #include "ui/native_theme/native_theme_win.h"
|
| @@ -372,6 +373,13 @@ void HWNDMessageHandler::Init(HWND parent, const gfx::Rect& bounds) {
|
| prop_window_target_.reset(new ui::ViewProp(hwnd(),
|
| ui::WindowEventTarget::kWin32InputEventTarget,
|
| static_cast<ui::WindowEventTarget*>(this)));
|
| +
|
| + // 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());
|
| }
|
|
|
| void HWNDMessageHandler::InitModalType(ui::ModalType modal_type) {
|
| @@ -513,6 +521,9 @@ void HWNDMessageHandler::SetBounds(const gfx::Rect& bounds_in_pixels,
|
| delegate_->HandleClientSizeChanged(GetClientAreaBounds().size());
|
| ResetWindowRegion(false, true);
|
| }
|
| +
|
| + if (direct_manipulation_helper_)
|
| + direct_manipulation_helper_->SetBounds(bounds_in_pixels);
|
| }
|
|
|
| void HWNDMessageHandler::SetSize(const gfx::Size& size) {
|
| @@ -554,6 +565,8 @@ void HWNDMessageHandler::Show() {
|
| ShowWindowWithState(ui::SHOW_STATE_INACTIVE);
|
| }
|
| }
|
| + if (direct_manipulation_helper_)
|
| + direct_manipulation_helper_->Activate(hwnd());
|
| }
|
|
|
| void HWNDMessageHandler::ShowWindowWithState(ui::WindowShowState show_state) {
|
| @@ -2671,6 +2684,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
|
|
|
| if (!ref.get())
|
| return 0;
|
| +
|
| + if (direct_manipulation_helper_ && track_mouse &&
|
| + (message == WM_MOUSEWHEEL || message == WM_MOUSEHWHEEL)) {
|
| + direct_manipulation_helper_->HandleMouseWheel(hwnd(), message, w_param,
|
| + l_param);
|
| + }
|
| +
|
| if (!handled && message == WM_NCLBUTTONDOWN && w_param != HTSYSMENU &&
|
| delegate_->IsUsingCustomFrame()) {
|
| // TODO(vadimt): Remove ScopedTracker below once crbug.com/440919 is fixed.
|
|
|