OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #import "chrome/browser/ui/cocoa/event_utils.h" | 5 #import "chrome/browser/ui/cocoa/event_utils.h" |
6 | 6 |
| 7 #include "chrome/browser/event_disposition.h" |
7 #include "content/browser/disposition_utils.h" | 8 #include "content/browser/disposition_utils.h" |
| 9 #include "ui/base/events.h" |
| 10 |
| 11 namespace { |
| 12 |
| 13 bool isLeftButtonEvent(NSEvent* event) { |
| 14 NSEventType type = [event type]; |
| 15 return type == NSLeftMouseDown || |
| 16 type == NSLeftMouseDragged || |
| 17 type == NSLeftMouseUp; |
| 18 } |
| 19 |
| 20 bool isRightButtonEvent(NSEvent* event) { |
| 21 NSEventType type = [event type]; |
| 22 return type == NSRightMouseDown || |
| 23 type == NSRightMouseDragged || |
| 24 type == NSRightMouseUp; |
| 25 } |
| 26 |
| 27 bool isMiddleButtonEvent(NSEvent* event) { |
| 28 if ([event buttonNumber] != 2) |
| 29 return false; |
| 30 |
| 31 NSEventType type = [event type]; |
| 32 return type == NSOtherMouseDown || |
| 33 type == NSOtherMouseDragged || |
| 34 type == NSOtherMouseUp; |
| 35 } |
| 36 |
| 37 } // namespace |
8 | 38 |
9 namespace event_utils { | 39 namespace event_utils { |
10 | 40 |
| 41 // Retrieves a bitsum of ui::EventFlags from NSEvent. |
| 42 int EventFlagsFromNSEvent(NSEvent* event) { |
| 43 NSUInteger modifiers = [event modifierFlags]; |
| 44 return EventFlagsFromNSEventWithModifiers(event, modifiers); |
| 45 } |
| 46 |
| 47 int EventFlagsFromNSEventWithModifiers(NSEvent* event, NSUInteger modifiers) { |
| 48 int flags = 0; |
| 49 flags |= (modifiers & NSAlphaShiftKeyMask) ? ui::EF_CAPS_LOCK_DOWN : 0; |
| 50 flags |= (modifiers & NSShiftKeyMask) ? ui::EF_SHIFT_DOWN : 0; |
| 51 flags |= (modifiers & NSControlKeyMask) ? ui::EF_CONTROL_DOWN : 0; |
| 52 flags |= (modifiers & NSAlternateKeyMask) ? ui::EF_ALT_DOWN : 0; |
| 53 flags |= (modifiers & NSCommandKeyMask) ? ui::EF_COMMAND_DOWN : 0; |
| 54 flags |= isLeftButtonEvent(event) ? ui::EF_LEFT_BUTTON_DOWN : 0; |
| 55 flags |= isRightButtonEvent(event) ? ui::EF_RIGHT_BUTTON_DOWN : 0; |
| 56 flags |= isMiddleButtonEvent(event) ? ui::EF_MIDDLE_BUTTON_DOWN : 0; |
| 57 return flags; |
| 58 } |
| 59 |
11 WindowOpenDisposition WindowOpenDispositionFromNSEvent(NSEvent* event) { | 60 WindowOpenDisposition WindowOpenDispositionFromNSEvent(NSEvent* event) { |
12 NSUInteger modifiers = [event modifierFlags]; | 61 NSUInteger modifiers = [event modifierFlags]; |
13 return WindowOpenDispositionFromNSEventWithFlags(event, modifiers); | 62 return WindowOpenDispositionFromNSEventWithFlags(event, modifiers); |
14 } | 63 } |
15 | 64 |
16 WindowOpenDisposition WindowOpenDispositionFromNSEventWithFlags( | 65 WindowOpenDisposition WindowOpenDispositionFromNSEventWithFlags( |
17 NSEvent* event, NSUInteger flags) { | 66 NSEvent* event, NSUInteger modifiers) { |
18 return disposition_utils::DispositionFromClick( | 67 int event_flags = EventFlagsFromNSEventWithModifiers(event, modifiers); |
19 [event buttonNumber] == 2, | 68 return browser::DispositionFromEventFlags(event_flags); |
20 flags & NSAlternateKeyMask, | |
21 flags & NSControlKeyMask, | |
22 flags & NSCommandKeyMask, | |
23 flags & NSShiftKeyMask); | |
24 } | 69 } |
25 | 70 |
26 } // namespace event_utils | 71 } // namespace event_utils |
OLD | NEW |