| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 /* | 5 /* |
| 6 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. |
| 7 * Copyright (C) 2006-2009 Google Inc. | 7 * Copyright (C) 2006-2009 Google Inc. |
| 8 * | 8 * |
| 9 * Redistribution and use in source and binary forms, with or without | 9 * Redistribution and use in source and binary forms, with or without |
| 10 * modification, are permitted provided that the following conditions | 10 * modification, are permitted provided that the following conditions |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 modifiers |= blink::WebInputEvent::MiddleButtonDown; | 108 modifiers |= blink::WebInputEvent::MiddleButtonDown; |
| 109 | 109 |
| 110 return modifiers; | 110 return modifiers; |
| 111 } | 111 } |
| 112 | 112 |
| 113 void SetWebEventLocationFromEventInView(blink::WebMouseEvent* result, | 113 void SetWebEventLocationFromEventInView(blink::WebMouseEvent* result, |
| 114 NSEvent* event, | 114 NSEvent* event, |
| 115 NSView* view) { | 115 NSView* view) { |
| 116 NSPoint screen_local = ui::ConvertPointFromWindowToScreen( | 116 NSPoint screen_local = ui::ConvertPointFromWindowToScreen( |
| 117 [view window], [event locationInWindow]); | 117 [view window], [event locationInWindow]); |
| 118 result->globalX = screen_local.x; | |
| 119 // Flip y. | |
| 120 NSScreen* primary_screen = ([[NSScreen screens] count] > 0) | 118 NSScreen* primary_screen = ([[NSScreen screens] count] > 0) |
| 121 ? [[NSScreen screens] firstObject] | 119 ? [[NSScreen screens] firstObject] |
| 122 : nil; | 120 : nil; |
| 123 if (primary_screen) | 121 // Flip y conditionally. |
| 124 result->globalY = [primary_screen frame].size.height - screen_local.y; | 122 result->setPositionInScreen( |
| 125 else | 123 screen_local.x, primary_screen |
| 126 result->globalY = screen_local.y; | 124 ? [primary_screen frame].size.height - screen_local.y |
| 125 : screen_local.y); |
| 127 | 126 |
| 128 NSPoint content_local = | 127 NSPoint content_local = |
| 129 [view convertPoint:[event locationInWindow] fromView:nil]; | 128 [view convertPoint:[event locationInWindow] fromView:nil]; |
| 130 result->x = content_local.x; | 129 // Flip y. |
| 131 result->y = [view frame].size.height - content_local.y; // Flip y. | 130 result->setPositionInWidget(content_local.x, |
| 131 [view frame].size.height - content_local.y); |
| 132 | 132 |
| 133 result->movementX = [event deltaX]; | 133 result->movementX = [event deltaX]; |
| 134 result->movementY = [event deltaY]; | 134 result->movementY = [event deltaY]; |
| 135 } | 135 } |
| 136 | 136 |
| 137 bool IsSystemKeyEvent(const blink::WebKeyboardEvent& event) { | 137 bool IsSystemKeyEvent(const blink::WebKeyboardEvent& event) { |
| 138 // Windows and Linux set |isSystemKey| if alt is down. Blink looks at this | 138 // Windows and Linux set |isSystemKey| if alt is down. Blink looks at this |
| 139 // flag to decide if it should handle a key or not. E.g. alt-left/right | 139 // flag to decide if it should handle a key or not. E.g. alt-left/right |
| 140 // shouldn't be used by Blink to scroll the current page, because we want | 140 // shouldn't be used by Blink to scroll the current page, because we want |
| 141 // to get that key back for it to do history navigation. Hence, the | 141 // to get that key back for it to do history navigation. Hence, the |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 } | 500 } |
| 501 | 501 |
| 502 blink::WebGestureEvent WebGestureEventBuilder::Build(NSEvent* event, | 502 blink::WebGestureEvent WebGestureEventBuilder::Build(NSEvent* event, |
| 503 NSView* view) { | 503 NSView* view) { |
| 504 blink::WebGestureEvent result; | 504 blink::WebGestureEvent result; |
| 505 | 505 |
| 506 // Use a temporary WebMouseEvent to get the location. | 506 // Use a temporary WebMouseEvent to get the location. |
| 507 blink::WebMouseEvent temp; | 507 blink::WebMouseEvent temp; |
| 508 | 508 |
| 509 SetWebEventLocationFromEventInView(&temp, event, view); | 509 SetWebEventLocationFromEventInView(&temp, event, view); |
| 510 result.x = temp.x; | 510 result.x = temp.positionInWidget().x; |
| 511 result.y = temp.y; | 511 result.y = temp.positionInWidget().y; |
| 512 result.globalX = temp.globalX; | 512 result.globalX = temp.positionInScreen().x; |
| 513 result.globalY = temp.globalY; | 513 result.globalY = temp.positionInScreen().y; |
| 514 | 514 |
| 515 result.setModifiers(ModifiersFromEvent(event)); | 515 result.setModifiers(ModifiersFromEvent(event)); |
| 516 result.setTimeStampSeconds([event timestamp]); | 516 result.setTimeStampSeconds([event timestamp]); |
| 517 | 517 |
| 518 result.sourceDevice = blink::WebGestureDeviceTouchpad; | 518 result.sourceDevice = blink::WebGestureDeviceTouchpad; |
| 519 switch ([event type]) { | 519 switch ([event type]) { |
| 520 case NSEventTypeMagnify: | 520 case NSEventTypeMagnify: |
| 521 result.setType(blink::WebInputEvent::GesturePinchUpdate); | 521 result.setType(blink::WebInputEvent::GesturePinchUpdate); |
| 522 result.data.pinchUpdate.scale = [event magnification] + 1.0; | 522 result.data.pinchUpdate.scale = [event magnification] + 1.0; |
| 523 break; | 523 break; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 536 // to specify them when the gesture is differentiated. | 536 // to specify them when the gesture is differentiated. |
| 537 break; | 537 break; |
| 538 default: | 538 default: |
| 539 NOTIMPLEMENTED(); | 539 NOTIMPLEMENTED(); |
| 540 } | 540 } |
| 541 | 541 |
| 542 return result; | 542 return result; |
| 543 } | 543 } |
| 544 | 544 |
| 545 } // namespace content | 545 } // namespace content |
| OLD | NEW |