summaryrefslogtreecommitdiffstats
path: root/chromium/ui/events/event_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/events/event_utils.cc')
-rw-r--r--chromium/ui/events/event_utils.cc63
1 files changed, 55 insertions, 8 deletions
diff --git a/chromium/ui/events/event_utils.cc b/chromium/ui/events/event_utils.cc
index a8c95da6f8f..e4b384a4744 100644
--- a/chromium/ui/events/event_utils.cc
+++ b/chromium/ui/events/event_utils.cc
@@ -16,8 +16,51 @@ namespace {
int g_custom_event_types = ET_LAST;
} // namespace
-bool EventCanceledDefaultHandling(const Event& event) {
- return event.phase() == EP_POSTTARGET && event.result() != ER_UNHANDLED;
+scoped_ptr<Event> EventFromNative(const base::NativeEvent& native_event) {
+ scoped_ptr<Event> event;
+ EventType type = EventTypeFromNative(native_event);
+ switch(type) {
+ case ET_KEY_PRESSED:
+ case ET_KEY_RELEASED:
+ event.reset(new KeyEvent(native_event, false));
+ break;
+
+ case ET_TRANSLATED_KEY_PRESS:
+ case ET_TRANSLATED_KEY_RELEASE:
+ // These should not be generated by native events.
+ NOTREACHED();
+ break;
+
+ case ET_MOUSE_PRESSED:
+ case ET_MOUSE_DRAGGED:
+ case ET_MOUSE_RELEASED:
+ case ET_MOUSE_MOVED:
+ case ET_MOUSE_ENTERED:
+ case ET_MOUSE_EXITED:
+ event.reset(new MouseEvent(native_event));
+ break;
+
+ case ET_MOUSEWHEEL:
+ event.reset(new MouseWheelEvent(native_event));
+ break;
+
+ case ET_SCROLL_FLING_START:
+ case ET_SCROLL_FLING_CANCEL:
+ case ET_SCROLL:
+ event.reset(new ScrollEvent(native_event));
+ break;
+
+ case ET_TOUCH_RELEASED:
+ case ET_TOUCH_PRESSED:
+ case ET_TOUCH_MOVED:
+ case ET_TOUCH_CANCELLED:
+ event.reset(new TouchEvent(native_event));
+ break;
+
+ default:
+ break;
+ }
+ return event.Pass();
}
int RegisterCustomEventType() {
@@ -30,18 +73,22 @@ base::TimeDelta EventTimeForNow() {
}
bool ShouldDefaultToNaturalScroll() {
+ return GetInternalDisplayTouchSupport() ==
+ gfx::Display::TOUCH_SUPPORT_AVAILABLE;
+}
+
+gfx::Display::TouchSupport GetInternalDisplayTouchSupport() {
gfx::Screen* screen = gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_NATIVE);
+ // No screen in some unit tests.
if (!screen)
- return false;
+ return gfx::Display::TOUCH_SUPPORT_UNKNOWN;
const std::vector<gfx::Display>& displays = screen->GetAllDisplays();
for (std::vector<gfx::Display>::const_iterator it = displays.begin();
it != displays.end(); ++it) {
- const gfx::Display& display = *it;
- if (display.IsInternal() &&
- display.touch_support() == gfx::Display::TOUCH_SUPPORT_AVAILABLE)
- return true;
+ if (it->IsInternal())
+ return it->touch_support();
}
- return false;
+ return gfx::Display::TOUCH_SUPPORT_UNAVAILABLE;
}
} // namespace ui