| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/events/blink/web_input_event_builders_win.h" | 5 #include "ui/events/blink/web_input_event_builders_win.h" |
| 6 | 6 |
| 7 #include "ui/display/win/screen_win.h" | 7 #include "ui/display/win/screen_win.h" |
| 8 #include "ui/events/blink/blink_event_util.h" | 8 #include "ui/events/blink/blink_event_util.h" |
| 9 #include "ui/events/event_utils.h" | 9 #include "ui/events/event_utils.h" |
| 10 | 10 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 WPARAM wparam, | 94 WPARAM wparam, |
| 95 LPARAM lparam, | 95 LPARAM lparam, |
| 96 double time_stamp, | 96 double time_stamp, |
| 97 blink::WebPointerProperties::PointerType pointer_type) { | 97 blink::WebPointerProperties::PointerType pointer_type) { |
| 98 WebMouseEvent result; | 98 WebMouseEvent result; |
| 99 | 99 |
| 100 switch (message) { | 100 switch (message) { |
| 101 case WM_MOUSEMOVE: | 101 case WM_MOUSEMOVE: |
| 102 result.type = WebInputEvent::MouseMove; | 102 result.type = WebInputEvent::MouseMove; |
| 103 if (wparam & MK_LBUTTON) | 103 if (wparam & MK_LBUTTON) |
| 104 result.button = WebMouseEvent::ButtonLeft; | 104 result.button = WebMouseEvent::Button::Left; |
| 105 else if (wparam & MK_MBUTTON) | 105 else if (wparam & MK_MBUTTON) |
| 106 result.button = WebMouseEvent::ButtonMiddle; | 106 result.button = WebMouseEvent::Button::Middle; |
| 107 else if (wparam & MK_RBUTTON) | 107 else if (wparam & MK_RBUTTON) |
| 108 result.button = WebMouseEvent::ButtonRight; | 108 result.button = WebMouseEvent::Button::Right; |
| 109 else | 109 else |
| 110 result.button = WebMouseEvent::ButtonNone; | 110 result.button = WebMouseEvent::Button::NoButton; |
| 111 break; | 111 break; |
| 112 case WM_MOUSELEAVE: | 112 case WM_MOUSELEAVE: |
| 113 case WM_NCMOUSELEAVE: | 113 case WM_NCMOUSELEAVE: |
| 114 // TODO(rbyers): This should be MouseLeave but is disabled temporarily. | 114 // TODO(rbyers): This should be MouseLeave but is disabled temporarily. |
| 115 // See http://crbug.com/450631 | 115 // See http://crbug.com/450631 |
| 116 result.type = WebInputEvent::MouseMove; | 116 result.type = WebInputEvent::MouseMove; |
| 117 result.button = WebMouseEvent::ButtonNone; | 117 result.button = WebMouseEvent::Button::NoButton; |
| 118 // set the current mouse position (relative to the client area of the | 118 // set the current mouse position (relative to the client area of the |
| 119 // current window) since none is specified for this event | 119 // current window) since none is specified for this event |
| 120 lparam = GetRelativeCursorPos(hwnd); | 120 lparam = GetRelativeCursorPos(hwnd); |
| 121 break; | 121 break; |
| 122 case WM_LBUTTONDOWN: | 122 case WM_LBUTTONDOWN: |
| 123 case WM_LBUTTONDBLCLK: | 123 case WM_LBUTTONDBLCLK: |
| 124 result.type = WebInputEvent::MouseDown; | 124 result.type = WebInputEvent::MouseDown; |
| 125 result.button = WebMouseEvent::ButtonLeft; | 125 result.button = WebMouseEvent::Button::Left; |
| 126 break; | 126 break; |
| 127 case WM_MBUTTONDOWN: | 127 case WM_MBUTTONDOWN: |
| 128 case WM_MBUTTONDBLCLK: | 128 case WM_MBUTTONDBLCLK: |
| 129 result.type = WebInputEvent::MouseDown; | 129 result.type = WebInputEvent::MouseDown; |
| 130 result.button = WebMouseEvent::ButtonMiddle; | 130 result.button = WebMouseEvent::Button::Middle; |
| 131 break; | 131 break; |
| 132 case WM_RBUTTONDOWN: | 132 case WM_RBUTTONDOWN: |
| 133 case WM_RBUTTONDBLCLK: | 133 case WM_RBUTTONDBLCLK: |
| 134 result.type = WebInputEvent::MouseDown; | 134 result.type = WebInputEvent::MouseDown; |
| 135 result.button = WebMouseEvent::ButtonRight; | 135 result.button = WebMouseEvent::Button::Right; |
| 136 break; | 136 break; |
| 137 case WM_LBUTTONUP: | 137 case WM_LBUTTONUP: |
| 138 result.type = WebInputEvent::MouseUp; | 138 result.type = WebInputEvent::MouseUp; |
| 139 result.button = WebMouseEvent::ButtonLeft; | 139 result.button = WebMouseEvent::Button::Left; |
| 140 break; | 140 break; |
| 141 case WM_MBUTTONUP: | 141 case WM_MBUTTONUP: |
| 142 result.type = WebInputEvent::MouseUp; | 142 result.type = WebInputEvent::MouseUp; |
| 143 result.button = WebMouseEvent::ButtonMiddle; | 143 result.button = WebMouseEvent::Button::Middle; |
| 144 break; | 144 break; |
| 145 case WM_RBUTTONUP: | 145 case WM_RBUTTONUP: |
| 146 result.type = WebInputEvent::MouseUp; | 146 result.type = WebInputEvent::MouseUp; |
| 147 result.button = WebMouseEvent::ButtonRight; | 147 result.button = WebMouseEvent::Button::Right; |
| 148 break; | 148 break; |
| 149 default: | 149 default: |
| 150 NOTREACHED(); | 150 NOTREACHED(); |
| 151 } | 151 } |
| 152 | 152 |
| 153 result.timeStampSeconds = time_stamp; | 153 result.timeStampSeconds = time_stamp; |
| 154 result.pointerType = pointer_type; | 154 result.pointerType = pointer_type; |
| 155 | 155 |
| 156 // set position fields: | 156 // set position fields: |
| 157 | 157 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 169 | 169 |
| 170 result.globalX = dip_global_point.x(); | 170 result.globalX = dip_global_point.x(); |
| 171 result.globalY = dip_global_point.y(); | 171 result.globalY = dip_global_point.y(); |
| 172 | 172 |
| 173 // calculate number of clicks: | 173 // calculate number of clicks: |
| 174 | 174 |
| 175 // This differs slightly from the WebKit code in WebKit/win/WebView.cpp | 175 // This differs slightly from the WebKit code in WebKit/win/WebView.cpp |
| 176 // where their original code looks buggy. | 176 // where their original code looks buggy. |
| 177 static int last_click_position_x; | 177 static int last_click_position_x; |
| 178 static int last_click_position_y; | 178 static int last_click_position_y; |
| 179 static WebMouseEvent::Button last_click_button = WebMouseEvent::ButtonLeft; | 179 static WebMouseEvent::Button last_click_button = WebMouseEvent::Button::Left; |
| 180 | 180 |
| 181 double current_time = result.timeStampSeconds; | 181 double current_time = result.timeStampSeconds; |
| 182 bool cancel_previous_click = | 182 bool cancel_previous_click = |
| 183 (abs(last_click_position_x - result.x) > | 183 (abs(last_click_position_x - result.x) > |
| 184 (::GetSystemMetrics(SM_CXDOUBLECLK) / 2)) || | 184 (::GetSystemMetrics(SM_CXDOUBLECLK) / 2)) || |
| 185 (abs(last_click_position_y - result.y) > | 185 (abs(last_click_position_y - result.y) > |
| 186 (::GetSystemMetrics(SM_CYDOUBLECLK) / 2)) || | 186 (::GetSystemMetrics(SM_CYDOUBLECLK) / 2)) || |
| 187 ((current_time - g_last_click_time) * 1000.0 > ::GetDoubleClickTime()); | 187 ((current_time - g_last_click_time) * 1000.0 > ::GetDoubleClickTime()); |
| 188 | 188 |
| 189 if (result.type == WebInputEvent::MouseDown) { | 189 if (result.type == WebInputEvent::MouseDown) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 WPARAM wparam, | 232 WPARAM wparam, |
| 233 LPARAM lparam, | 233 LPARAM lparam, |
| 234 double time_stamp, | 234 double time_stamp, |
| 235 blink::WebPointerProperties::PointerType pointer_type) { | 235 blink::WebPointerProperties::PointerType pointer_type) { |
| 236 WebMouseWheelEvent result; | 236 WebMouseWheelEvent result; |
| 237 | 237 |
| 238 result.type = WebInputEvent::MouseWheel; | 238 result.type = WebInputEvent::MouseWheel; |
| 239 | 239 |
| 240 result.timeStampSeconds = time_stamp; | 240 result.timeStampSeconds = time_stamp; |
| 241 | 241 |
| 242 result.button = WebMouseEvent::ButtonNone; | 242 result.button = WebMouseEvent::Button::NoButton; |
| 243 | 243 |
| 244 result.pointerType = pointer_type; | 244 result.pointerType = pointer_type; |
| 245 | 245 |
| 246 // Get key state, coordinates, and wheel delta from event. | 246 // Get key state, coordinates, and wheel delta from event. |
| 247 UINT key_state; | 247 UINT key_state; |
| 248 float wheel_delta; | 248 float wheel_delta; |
| 249 bool horizontal_scroll = false; | 249 bool horizontal_scroll = false; |
| 250 if ((message == WM_VSCROLL) || (message == WM_HSCROLL)) { | 250 if ((message == WM_VSCROLL) || (message == WM_HSCROLL)) { |
| 251 // Synthesize mousewheel event from a scroll event. This is needed to | 251 // Synthesize mousewheel event from a scroll event. This is needed to |
| 252 // simulate middle mouse scrolling in some laptops. Use GetAsyncKeyState | 252 // simulate middle mouse scrolling in some laptops. Use GetAsyncKeyState |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 result.wheelTicksX = wheel_delta; | 367 result.wheelTicksX = wheel_delta; |
| 368 } else { | 368 } else { |
| 369 result.deltaY = scroll_delta; | 369 result.deltaY = scroll_delta; |
| 370 result.wheelTicksY = wheel_delta; | 370 result.wheelTicksY = wheel_delta; |
| 371 } | 371 } |
| 372 | 372 |
| 373 return result; | 373 return result; |
| 374 } | 374 } |
| 375 | 375 |
| 376 } // namespace ui | 376 } // namespace ui |
| OLD | NEW |