| 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 b035fd32716f75454a44aa5dd02b652a0c6dceba..561e05323a991805f56b3b07fcd8871a6ce71709 100644
|
| --- a/ui/views/win/hwnd_message_handler.cc
|
| +++ b/ui/views/win/hwnd_message_handler.cc
|
| @@ -221,14 +221,6 @@ bool IsTopLevelWindow(HWND window) {
|
| return !parent || (parent == ::GetDesktopWindow());
|
| }
|
|
|
| -void AddScrollStylesToWindow(HWND window) {
|
| - if (::IsWindow(window)) {
|
| - long current_style = ::GetWindowLong(window, GWL_STYLE);
|
| - ::SetWindowLong(window, GWL_STYLE,
|
| - current_style | WS_VSCROLL | WS_HSCROLL);
|
| - }
|
| -}
|
| -
|
| const int kTouchDownContextResetTimeout = 500;
|
|
|
| // Windows does not flag synthesized mouse messages from touch in all cases.
|
| @@ -330,7 +322,6 @@ HWNDMessageHandler::HWNDMessageHandler(HWNDMessageHandlerDelegate* delegate)
|
| is_first_nccalc_(true),
|
| menu_depth_(0),
|
| id_generator_(0),
|
| - needs_scroll_styles_(false),
|
| in_size_loop_(false),
|
| touch_down_contexts_(0),
|
| last_mouse_hwheel_time_(0),
|
| @@ -355,28 +346,6 @@ void HWNDMessageHandler::Init(HWND parent, const gfx::Rect& bounds) {
|
|
|
| // Create the window.
|
| WindowImpl::Init(parent, bounds);
|
| - // TODO(ananta)
|
| - // Remove the scrolling hack code once we have scrolling working well.
|
| -#if defined(ENABLE_SCROLL_HACK)
|
| - // Certain trackpad drivers on Windows have bugs where in they don't generate
|
| - // WM_MOUSEWHEEL messages for the trackpoint and trackpad scrolling gestures
|
| - // unless there is an entry for Chrome with the class name of the Window.
|
| - // These drivers check if the window under the trackpoint has the WS_VSCROLL/
|
| - // WS_HSCROLL style and if yes they generate the legacy WM_VSCROLL/WM_HSCROLL
|
| - // messages. We add these styles to ensure that trackpad/trackpoint scrolling
|
| - // work.
|
| - // TODO(ananta)
|
| - // Look into moving the WS_VSCROLL and WS_HSCROLL style setting logic to the
|
| - // CalculateWindowStylesFromInitParams function. Doing it there seems to
|
| - // cause some interactive tests to fail. Investigation needed.
|
| - if (IsTopLevelWindow(hwnd())) {
|
| - long current_style = ::GetWindowLong(hwnd(), GWL_STYLE);
|
| - if (!(current_style & WS_POPUP)) {
|
| - AddScrollStylesToWindow(hwnd());
|
| - needs_scroll_styles_ = true;
|
| - }
|
| - }
|
| -#endif
|
|
|
| prop_window_target_.reset(new ui::ViewProp(hwnd(),
|
| ui::WindowEventTarget::kWin32InputEventTarget,
|
| @@ -1424,13 +1393,6 @@ void HWNDMessageHandler::OnEnterMenuLoop(BOOL from_track_popup_menu) {
|
| }
|
|
|
| void HWNDMessageHandler::OnEnterSizeMove() {
|
| - // Please refer to the comments in the OnSize function about the scrollbar
|
| - // hack.
|
| - // Hide the Windows scrollbar if the scroll styles are present to ensure
|
| - // that a paint flicker does not occur while sizing.
|
| - if (in_size_loop_ && needs_scroll_styles_)
|
| - ShowScrollBar(hwnd(), SB_BOTH, FALSE);
|
| -
|
| delegate_->HandleBeginWMSizeMove();
|
| SetMsgHandled(FALSE);
|
| }
|
| @@ -1449,13 +1411,6 @@ void HWNDMessageHandler::OnExitMenuLoop(BOOL is_shortcut_menu) {
|
| void HWNDMessageHandler::OnExitSizeMove() {
|
| delegate_->HandleEndWMSizeMove();
|
| SetMsgHandled(FALSE);
|
| - // Please refer to the notes in the OnSize function for information about
|
| - // the scrolling hack.
|
| - // We hide the Windows scrollbar in the OnEnterSizeMove function. We need
|
| - // to add the scroll styles back to ensure that scrolling works in legacy
|
| - // trackpoint drivers.
|
| - if (in_size_loop_ && needs_scroll_styles_)
|
| - AddScrollStylesToWindow(hwnd());
|
| // If the window was moved to a monitor which has a fullscreen window active,
|
| // we need to reduce the size of the fullscreen window by 1px.
|
| CheckAndHandleBackgroundFullscreenOnMonitor(hwnd());
|
| @@ -1839,49 +1794,6 @@ LRESULT HWNDMessageHandler::OnNCHitTest(const gfx::Point& point) {
|
| // us.
|
| LRESULT hit_test_code = DefWindowProc(hwnd(), WM_NCHITTEST, 0,
|
| MAKELPARAM(point.x(), point.y()));
|
| - if (needs_scroll_styles_) {
|
| - switch (hit_test_code) {
|
| - // If we faked the WS_VSCROLL and WS_HSCROLL styles for this window, then
|
| - // Windows returns the HTVSCROLL or HTHSCROLL hit test codes if we hover
|
| - // or click on the non client portions of the window where the OS
|
| - // scrollbars would be drawn. These hittest codes are returned even when
|
| - // the scrollbars are hidden, which is the case in Aura. We fake the
|
| - // hittest code as HTCLIENT in this case to ensure that we receive client
|
| - // mouse messages as opposed to non client mouse messages.
|
| - case HTVSCROLL:
|
| - case HTHSCROLL:
|
| - hit_test_code = HTCLIENT;
|
| - break;
|
| -
|
| - case HTBOTTOMRIGHT: {
|
| - // Normally the HTBOTTOMRIGHT hittest code is received when we hover
|
| - // near the bottom right of the window. However due to our fake scroll
|
| - // styles, we get this code even when we hover around the area where
|
| - // the vertical scrollar down arrow would be drawn.
|
| - // We check if the hittest coordinates lie in this region and if yes
|
| - // we return HTCLIENT.
|
| - int border_width = ::GetSystemMetrics(SM_CXSIZEFRAME);
|
| - int border_height = ::GetSystemMetrics(SM_CYSIZEFRAME);
|
| - int scroll_width = ::GetSystemMetrics(SM_CXVSCROLL);
|
| - int scroll_height = ::GetSystemMetrics(SM_CYVSCROLL);
|
| - RECT window_rect;
|
| - ::GetWindowRect(hwnd(), &window_rect);
|
| - window_rect.bottom -= border_height;
|
| - window_rect.right -= border_width;
|
| - window_rect.left = window_rect.right - scroll_width;
|
| - window_rect.top = window_rect.bottom - scroll_height;
|
| - POINT pt;
|
| - pt.x = point.x();
|
| - pt.y = point.y();
|
| - if (::PtInRect(&window_rect, pt))
|
| - hit_test_code = HTCLIENT;
|
| - break;
|
| - }
|
| -
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| return hit_test_code;
|
| }
|
|
|
| @@ -2129,19 +2041,6 @@ void HWNDMessageHandler::OnSize(UINT param, const gfx::Size& size) {
|
| // ResetWindowRegion is going to trigger WM_NCPAINT. By doing it after we've
|
| // invoked OnSize we ensure the RootView has been laid out.
|
| ResetWindowRegion(false, true);
|
| -
|
| - // We add the WS_VSCROLL and WS_HSCROLL styles to top level windows to ensure
|
| - // that legacy trackpad/trackpoint drivers generate the WM_VSCROLL and
|
| - // WM_HSCROLL messages and scrolling works.
|
| - // We want the scroll styles to be present on the window. However we don't
|
| - // want Windows to draw the scrollbars. To achieve this we hide the scroll
|
| - // bars and readd them to the window style in a posted task to ensure that we
|
| - // don't get nested WM_SIZE messages.
|
| - if (needs_scroll_styles_ && !in_size_loop_) {
|
| - ShowScrollBar(hwnd(), SB_BOTH, FALSE);
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE, base::Bind(&AddScrollStylesToWindow, hwnd()));
|
| - }
|
| }
|
|
|
| void HWNDMessageHandler::OnSysCommand(UINT notification_code,
|
| @@ -2430,15 +2329,15 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
|
| // TODO(ananta)
|
| // Windows does not reliably set the touch flag on mouse messages. Look into
|
| // a better way of identifying mouse messages originating from touch.
|
| - if (ui::IsMouseEventFromTouch(message)) {
|
| + if ((message != WM_MOUSEWHEEL && message != WM_MOUSEHWHEEL) &&
|
| + (ui::IsMouseEventFromTouch(message))) {
|
| LPARAM l_param_ht = l_param;
|
| // For mouse events (except wheel events), location is in window coordinates
|
| // and should be converted to screen coordinates for WM_NCHITTEST.
|
| - if (message != WM_MOUSEWHEEL && message != WM_MOUSEHWHEEL) {
|
| - POINT screen_point = CR_POINT_INITIALIZER_FROM_LPARAM(l_param_ht);
|
| - MapWindowPoints(hwnd(), HWND_DESKTOP, &screen_point, 1);
|
| - l_param_ht = MAKELPARAM(screen_point.x, screen_point.y);
|
| - }
|
| + POINT screen_point = CR_POINT_INITIALIZER_FROM_LPARAM(l_param_ht);
|
| + MapWindowPoints(hwnd(), HWND_DESKTOP, &screen_point, 1);
|
| + l_param_ht = MAKELPARAM(screen_point.x, screen_point.y);
|
| +
|
| LRESULT hittest = SendMessage(hwnd(), WM_NCHITTEST, 0, l_param_ht);
|
| if (hittest == HTCLIENT || hittest == HTNOWHERE)
|
| return 0;
|
|
|