Index: chrome/browser/ui/cocoa/event_utils.mm |
diff --git a/chrome/browser/ui/cocoa/event_utils.mm b/chrome/browser/ui/cocoa/event_utils.mm |
index 32ad8f80c649cc2995b0335adc66fd225b714a37..afd0b5b7623d2f039aee99b48a889cf8f8b7e698 100644 |
--- a/chrome/browser/ui/cocoa/event_utils.mm |
+++ b/chrome/browser/ui/cocoa/event_utils.mm |
@@ -4,23 +4,68 @@ |
#import "chrome/browser/ui/cocoa/event_utils.h" |
+#include "chrome/browser/event_disposition.h" |
#include "content/browser/disposition_utils.h" |
+#include "ui/base/events.h" |
+ |
+namespace { |
+ |
+bool isLeftButtonEvent(NSEvent* event) { |
+ NSEventType type = [event type]; |
+ return type == NSLeftMouseDown || |
+ type == NSLeftMouseDragged || |
+ type == NSLeftMouseUp; |
+} |
+ |
+bool isRightButtonEvent(NSEvent* event) { |
+ NSEventType type = [event type]; |
+ return type == NSRightMouseDown || |
+ type == NSRightMouseDragged || |
+ type == NSRightMouseUp; |
+} |
+ |
+bool isMiddleButtonEvent(NSEvent* event) { |
+ if ([event buttonNumber] != 2) |
+ return false; |
+ |
+ NSEventType type = [event type]; |
+ return type == NSOtherMouseDown || |
+ type == NSOtherMouseDragged || |
+ type == NSOtherMouseUp; |
+} |
+ |
+} // namespace |
namespace event_utils { |
+// Retrieves a bitsum of ui::EventFlags from NSEvent. |
+int EventFlagsFromNSEvent(NSEvent* event) { |
+ NSUInteger modifiers = [event modifierFlags]; |
+ return EventFlagsFromNSEventWithModifiers(event, modifiers); |
+} |
+ |
+int EventFlagsFromNSEventWithModifiers(NSEvent* event, NSUInteger modifiers) { |
+ int flags = 0; |
+ flags |= (modifiers & NSAlphaShiftKeyMask) ? ui::EF_CAPS_LOCK_DOWN : 0; |
+ flags |= (modifiers & NSShiftKeyMask) ? ui::EF_SHIFT_DOWN : 0; |
+ flags |= (modifiers & NSControlKeyMask) ? ui::EF_CONTROL_DOWN : 0; |
+ flags |= (modifiers & NSAlternateKeyMask) ? ui::EF_ALT_DOWN : 0; |
+ flags |= (modifiers & NSCommandKeyMask) ? ui::EF_COMMAND_DOWN : 0; |
+ flags |= isLeftButtonEvent(event) ? ui::EF_LEFT_BUTTON_DOWN : 0; |
+ flags |= isRightButtonEvent(event) ? ui::EF_RIGHT_BUTTON_DOWN : 0; |
+ flags |= isMiddleButtonEvent(event) ? ui::EF_MIDDLE_BUTTON_DOWN : 0; |
+ return flags; |
+} |
+ |
WindowOpenDisposition WindowOpenDispositionFromNSEvent(NSEvent* event) { |
NSUInteger modifiers = [event modifierFlags]; |
return WindowOpenDispositionFromNSEventWithFlags(event, modifiers); |
} |
WindowOpenDisposition WindowOpenDispositionFromNSEventWithFlags( |
- NSEvent* event, NSUInteger flags) { |
- return disposition_utils::DispositionFromClick( |
- [event buttonNumber] == 2, |
- flags & NSAlternateKeyMask, |
- flags & NSControlKeyMask, |
- flags & NSCommandKeyMask, |
- flags & NSShiftKeyMask); |
+ NSEvent* event, NSUInteger modifiers) { |
+ int event_flags = EventFlagsFromNSEventWithModifiers(event, modifiers); |
+ return browser::DispositionFromEventFlags(event_flags); |
} |
} // namespace event_utils |