OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "webkit/glue/webinputevent.h" | 7 #include "webkit/glue/webinputevent.h" |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 break; | 156 break; |
157 case SB_PAGEDOWN: | 157 case SB_PAGEDOWN: |
158 wheel_delta = -1; | 158 wheel_delta = -1; |
159 scroll_by_page = true; | 159 scroll_by_page = true; |
160 break; | 160 break; |
161 default: // We don't supoprt SB_THUMBPOSITION or SB_THUMBTRACK here. | 161 default: // We don't supoprt SB_THUMBPOSITION or SB_THUMBTRACK here. |
162 wheel_delta = 0; | 162 wheel_delta = 0; |
163 break; | 163 break; |
164 } | 164 } |
165 | 165 |
166 if (message == WM_HSCROLL) { | 166 if (message == WM_HSCROLL) |
167 horizontal_scroll = true; | 167 horizontal_scroll = true; |
168 wheel_delta = -wheel_delta; | |
169 } | |
170 } else { | 168 } else { |
171 // Non-synthesized event; we can just read data off the event. | 169 // Non-synthesized event; we can just read data off the event. |
172 get_key_state = GetKeyState; | 170 get_key_state = GetKeyState; |
173 key_state = GET_KEYSTATE_WPARAM(wparam); | 171 key_state = GET_KEYSTATE_WPARAM(wparam); |
174 | 172 |
175 global_x = static_cast<short>(LOWORD(lparam)); | 173 global_x = static_cast<short>(LOWORD(lparam)); |
176 global_y = static_cast<short>(HIWORD(lparam)); | 174 global_y = static_cast<short>(HIWORD(lparam)); |
177 | 175 |
178 wheel_delta = static_cast<float>(GET_WHEEL_DELTA_WPARAM(wparam)); | 176 wheel_delta = static_cast<float>(GET_WHEEL_DELTA_WPARAM(wparam)); |
179 if (((message == WM_MOUSEHWHEEL) || (key_state & MK_SHIFT)) && | 177 if (message == WM_MOUSEHWHEEL) { |
180 (wheel_delta != 0)) | |
181 horizontal_scroll = true; | 178 horizontal_scroll = true; |
| 179 wheel_delta = -wheel_delta; // Windows is <- -/+ ->, WebKit <- +/- ->. |
| 180 } |
182 } | 181 } |
| 182 if (key_state & MK_SHIFT) |
| 183 horizontal_scroll = true; |
183 | 184 |
184 // Set modifiers based on key state. | 185 // Set modifiers based on key state. |
185 if (key_state & MK_SHIFT) | 186 if (key_state & MK_SHIFT) |
186 modifiers |= SHIFT_KEY; | 187 modifiers |= SHIFT_KEY; |
187 if (key_state & MK_CONTROL) | 188 if (key_state & MK_CONTROL) |
188 modifiers |= CTRL_KEY; | 189 modifiers |= CTRL_KEY; |
189 if (get_key_state(VK_MENU) & 0x8000) | 190 if (get_key_state(VK_MENU) & 0x8000) |
190 modifiers |= (ALT_KEY | META_KEY); | 191 modifiers |= (ALT_KEY | META_KEY); |
191 | 192 |
192 // Set coordinates by translating event coordinates from screen to client. | 193 // Set coordinates by translating event coordinates from screen to client. |
(...skipping 23 matching lines...) Expand all Loading... |
216 unsigned long scroll_lines = kDefaultScrollLinesPerWheelDelta; | 217 unsigned long scroll_lines = kDefaultScrollLinesPerWheelDelta; |
217 SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &scroll_lines, 0); | 218 SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &scroll_lines, 0); |
218 if (scroll_lines == WHEEL_PAGESCROLL) | 219 if (scroll_lines == WHEEL_PAGESCROLL) |
219 scroll_by_page = true; | 220 scroll_by_page = true; |
220 if (!scroll_by_page) { | 221 if (!scroll_by_page) { |
221 scroll_delta *= | 222 scroll_delta *= |
222 static_cast<float>(scroll_lines) * kScrollbarPixelsPerLine; | 223 static_cast<float>(scroll_lines) * kScrollbarPixelsPerLine; |
223 } | 224 } |
224 } | 225 } |
225 | 226 |
226 // Set scroll amount based on above calculations. | 227 // Set scroll amount based on above calculations. WebKit expects positive |
| 228 // delta_y to mean "scroll up" and positive delta_x to mean "scroll left". |
227 if (horizontal_scroll) { | 229 if (horizontal_scroll) { |
228 delta_x = scroll_delta; | 230 delta_x = scroll_delta; |
229 delta_y = 0; | 231 delta_y = 0; |
230 } else { | 232 } else { |
231 delta_x = 0; | 233 delta_x = 0; |
232 delta_y = scroll_delta; | 234 delta_y = scroll_delta; |
233 } | 235 } |
234 } | 236 } |
235 | 237 |
236 // WebKeyboardEvent ----------------------------------------------------------- | 238 // WebKeyboardEvent ----------------------------------------------------------- |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 modifiers |= CTRL_KEY; | 332 modifiers |= CTRL_KEY; |
331 if (GetKeyState(VK_MENU) & 0x8000) | 333 if (GetKeyState(VK_MENU) & 0x8000) |
332 modifiers |= (ALT_KEY | META_KEY); | 334 modifiers |= (ALT_KEY | META_KEY); |
333 | 335 |
334 if (LOWORD(lparam) > 1) | 336 if (LOWORD(lparam) > 1) |
335 modifiers |= IS_AUTO_REPEAT; | 337 modifiers |= IS_AUTO_REPEAT; |
336 if (IsKeyPad(wparam, lparam)) | 338 if (IsKeyPad(wparam, lparam)) |
337 modifiers |= IS_KEYPAD; | 339 modifiers |= IS_KEYPAD; |
338 } | 340 } |
339 | 341 |
OLD | NEW |