OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/renderer_host/input/web_input_event_builders_win.h" | 5 #include "content/browser/renderer_host/input/web_input_event_builders_win.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "content/browser/renderer_host/input/web_input_event_util.h" | 8 #include "content/browser/renderer_host/input/web_input_event_util.h" |
9 #include "ui/display/win/screen_win.h" | 9 #include "ui/display/win/screen_win.h" |
10 #include "ui/events/blink/blink_event_util.h" | 10 #include "ui/events/blink/blink_event_util.h" |
(...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 content | 376 } // namespace content |
OLD | NEW |