Index: ui/events/cocoa/events_mac.mm |
diff --git a/ui/events/cocoa/events_mac.mm b/ui/events/cocoa/events_mac.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cca24ac0d3c85c9ecd4e64224fd0ac4f7c3a4364 |
--- /dev/null |
+++ b/ui/events/cocoa/events_mac.mm |
@@ -0,0 +1,225 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ui/events/event_utils.h" |
+ |
+#include <Cocoa/Cocoa.h> |
+ |
+#include "base/logging.h" |
+#include "base/time/time.h" |
+#include "build/build_config.h" |
+#include "ui/events/cocoa/cocoa_event_utils.h" |
+#include "ui/events/event_utils.h" |
+#import "ui/events/keycodes/keyboard_code_conversion_mac.h" |
+#include "ui/gfx/point.h" |
+#include "ui/gfx/vector2d.h" |
+ |
+namespace ui { |
+ |
+void UpdateDeviceList() { |
+ NOTIMPLEMENTED(); |
+} |
+ |
+EventType EventTypeFromNative(const base::NativeEvent& native_event) { |
+ NSEventType type = [native_event type]; |
+ switch (type) { |
+ case NSKeyDown: |
+ return ET_KEY_PRESSED; |
+ case NSKeyUp: |
+ return ET_KEY_RELEASED; |
+ case NSLeftMouseDown: |
+ case NSRightMouseDown: |
+ case NSOtherMouseDown: |
+ return ET_MOUSE_PRESSED; |
+ case NSLeftMouseUp: |
+ case NSRightMouseUp: |
+ case NSOtherMouseUp: |
+ return ET_MOUSE_RELEASED; |
+ case NSLeftMouseDragged: |
+ case NSRightMouseDragged: |
+ case NSOtherMouseDragged: |
+ return ET_MOUSE_DRAGGED; |
+ case NSMouseMoved: |
+ case NSScrollWheel: |
+ return ET_MOUSEWHEEL; |
+ case NSMouseEntered: |
+ return ET_MOUSE_ENTERED; |
+ case NSMouseExited: |
+ return ET_MOUSE_EXITED; |
+ case NSEventTypeSwipe: |
+ return ET_SCROLL_FLING_START; |
+ case NSFlagsChanged: |
+ case NSAppKitDefined: |
+ case NSSystemDefined: |
+ case NSApplicationDefined: |
+ case NSPeriodic: |
+ case NSCursorUpdate: |
+ case NSTabletPoint: |
+ case NSTabletProximity: |
+ case NSEventTypeGesture: |
+ case NSEventTypeMagnify: |
+ case NSEventTypeRotate: |
+ case NSEventTypeBeginGesture: |
+ case NSEventTypeEndGesture: |
+ NOTIMPLEMENTED() << type; |
+ break; |
+ default: |
Robert Sesek
2014/04/25 15:39:23
Shouldn't the default case also be NOTIMPLEMENTED(
tapted
2014/04/28 07:39:49
events_win and events_x do not do this. However, I
|
+ break; |
+ } |
+ return ET_UNKNOWN; |
+} |
+ |
+int EventFlagsFromNative(const base::NativeEvent& event) { |
+ NSUInteger modifiers = [event modifierFlags]; |
+ return EventFlagsFromNSEventWithModifiers(event, modifiers); |
+} |
+ |
+base::TimeDelta EventTimeFromNative(const base::NativeEvent& native_event) { |
Robert Sesek
2014/04/25 15:39:23
It's not clear to me what this function is trying
tapted
2014/04/28 07:39:49
It's a somewhat paranoid equivalent of
return bas
Robert Sesek
2014/04/28 18:51:32
That makes sense. I don't think it needs to be tha
|
+ NSTimeInterval since_system_startup = [native_event timestamp]; |
+ int64_t seconds = since_system_startup; |
+ since_system_startup -= seconds; |
+ int64_t microseconds = since_system_startup * 1000000; |
+ return base::TimeDelta::FromSeconds(seconds) + |
+ base::TimeDelta::FromMicroseconds(microseconds); |
+} |
+ |
+gfx::Point EventLocationFromNative(const base::NativeEvent& native_event) { |
+ if (![native_event window]) { |
+ NOTIMPLEMENTED(); // Point will be in screen coordinates. |
+ return gfx::Point(0, 0); |
sadrul
2014/04/25 11:40:28
You can just do gfx::Point()
tapted
2014/04/28 07:39:49
Done.
|
+ } |
+ NSPoint location = [native_event locationInWindow]; |
+ return gfx::Point(location.x, |
+ NSHeight([[native_event window] frame]) - location.y); |
+} |
+ |
+gfx::Point EventSystemLocationFromNative( |
+ const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return gfx::Point(); |
+} |
+ |
+int EventButtonFromNative(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return 0; |
+} |
+ |
+int GetChangedMouseButtonFlagsFromNative( |
+ const base::NativeEvent& native_event) { |
+ NSEventType type = [native_event type]; |
+ switch (type) { |
+ case NSLeftMouseDown: |
+ case NSLeftMouseUp: |
+ case NSLeftMouseDragged: |
+ return EF_LEFT_MOUSE_BUTTON; |
+ case NSRightMouseDown: |
+ case NSRightMouseUp: |
+ case NSRightMouseDragged: |
+ return EF_RIGHT_MOUSE_BUTTON; |
+ case NSOtherMouseDown: |
+ case NSOtherMouseUp: |
+ case NSOtherMouseDragged: |
+ return EF_MIDDLE_MOUSE_BUTTON; |
+ } |
+ return 0; |
+} |
+ |
+gfx::Vector2d GetMouseWheelOffset(const base::NativeEvent& event) { |
+ // Empirically, a value of 0.1 is typical for one mousewheel click. Positive |
+ // values when scrolling up or to the left. Scrolling quickly results in a |
+ // higher delta per click, up to about 15.0. (Quartz documentation suggests |
+ // +/-10). |
+ // Multiply by 1000 to vaguely approximate WHEEL_DELTA on Windows (120). |
+ const CGFloat kWheelDeltaMultiplier = 1000; |
+ return gfx::Vector2d(kWheelDeltaMultiplier * [event deltaX], |
+ kWheelDeltaMultiplier * [event deltaY]); |
+} |
+ |
+base::NativeEvent CopyNativeEvent(const base::NativeEvent& event) { |
+ return [event copy]; |
+} |
+ |
+void ReleaseCopiedNativeEvent(const base::NativeEvent& event) { |
+ [event release]; |
+} |
+ |
+void ClearTouchIdIfReleased(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+} |
+ |
+int GetTouchId(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return 0; |
+} |
+ |
+float GetTouchRadiusX(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return 0.f; |
+} |
+ |
+float GetTouchRadiusY(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return 0.f; |
+} |
+ |
+float GetTouchAngle(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return 0.f; |
+} |
+ |
+float GetTouchForce(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return 0.f; |
+} |
+ |
+bool GetScrollOffsets(const base::NativeEvent& native_event, |
+ float* x_offset, |
+ float* y_offset, |
+ float* x_offset_ordinal, |
+ float* y_offset_ordinal, |
+ int* finger_count) { |
+ NOTIMPLEMENTED(); |
+ return false; |
+} |
+ |
+bool GetFlingData(const base::NativeEvent& native_event, |
+ float* vx, |
+ float* vy, |
+ float* vx_ordinal, |
+ float* vy_ordinal, |
+ bool* is_cancel) { |
+ NOTIMPLEMENTED(); |
+ return false; |
+} |
+ |
+bool GetGestureTimes(const base::NativeEvent& native_event, |
+ double* start_time, |
+ double* end_time) { |
+ NOTIMPLEMENTED(); |
+ return false; |
+} |
+ |
+void SetNaturalScroll(bool enabled) { |
+ NOTIMPLEMENTED(); |
+} |
+ |
+bool IsNaturalScrollEnabled() { |
+ NOTIMPLEMENTED(); |
+ return false; |
+} |
+ |
+bool IsTouchpadEvent(const base::NativeEvent& native_event) { |
+ NOTIMPLEMENTED(); |
+ return false; |
+} |
+ |
+KeyboardCode KeyboardCodeFromNative(const base::NativeEvent& native_event) { |
+ return KeyboardCodeFromNSEvent(native_event); |
+} |
+ |
+const char* CodeFromNative(const base::NativeEvent& native_event) { |
+ return CodeFromNSEvent(native_event); |
+} |
+ |
+} // namespace ui |