summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/web_mouse_event.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/web_mouse_event.cc')
-rw-r--r--chromium/third_party/blink/renderer/platform/web_mouse_event.cc74
1 files changed, 74 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/platform/web_mouse_event.cc b/chromium/third_party/blink/renderer/platform/web_mouse_event.cc
new file mode 100644
index 00000000000..116f214fda1
--- /dev/null
+++ b/chromium/third_party/blink/renderer/platform/web_mouse_event.cc
@@ -0,0 +1,74 @@
+// Copyright 2016 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 "third_party/blink/public/platform/web_mouse_event.h"
+
+#include "third_party/blink/public/platform/web_gesture_event.h"
+
+namespace blink {
+
+WebMouseEvent::WebMouseEvent(WebInputEvent::Type type,
+ const WebGestureEvent& gesture_event,
+ Button button_param,
+ int click_count_param,
+ int modifiers,
+ double time_stamp_seconds,
+ PointerId id_param)
+ : WebInputEvent(sizeof(WebMouseEvent), type, modifiers, time_stamp_seconds),
+ WebPointerProperties(id_param,
+ WebPointerProperties::PointerType::kMouse,
+ button_param),
+ click_count(click_count_param) {
+ DCHECK_GE(type, kMouseTypeFirst);
+ DCHECK_LE(type, kMouseTypeLast);
+ SetPositionInWidget(gesture_event.PositionInWidget());
+ SetPositionInScreen(gesture_event.PositionInScreen());
+ SetFrameScale(gesture_event.FrameScale());
+ SetFrameTranslate(gesture_event.FrameTranslate());
+ SetMenuSourceType(gesture_event.GetType());
+}
+
+WebFloatPoint WebMouseEvent::MovementInRootFrame() const {
+ return WebFloatPoint((movement_x / frame_scale_),
+ (movement_y / frame_scale_));
+}
+
+WebFloatPoint WebMouseEvent::PositionInRootFrame() const {
+ return WebFloatPoint(
+ (position_in_widget_.x / frame_scale_) + frame_translate_.x,
+ (position_in_widget_.y / frame_scale_) + frame_translate_.y);
+}
+
+WebMouseEvent WebMouseEvent::FlattenTransform() const {
+ WebMouseEvent result = *this;
+ result.FlattenTransformSelf();
+ return result;
+}
+
+void WebMouseEvent::FlattenTransformSelf() {
+ position_in_widget_ = PositionInRootFrame();
+ frame_translate_.x = 0;
+ frame_translate_.y = 0;
+ frame_scale_ = 1;
+}
+
+void WebMouseEvent::SetMenuSourceType(WebInputEvent::Type type) {
+ switch (type) {
+ case kGestureTapDown:
+ case kGestureTap:
+ case kGestureDoubleTap:
+ menu_source_type = kMenuSourceTouch;
+ break;
+ case kGestureLongPress:
+ menu_source_type = kMenuSourceLongPress;
+ break;
+ case kGestureLongTap:
+ menu_source_type = kMenuSourceLongTap;
+ break;
+ default:
+ menu_source_type = kMenuSourceNone;
+ }
+}
+
+} // namespace blink