surface_id_(0),
is_modifier_key_(false),
touch_events_enabled_(false),
+ should_check_move_threshold_(false),
web_contents_(web_contents),
compositor_(NULL),
root_layer_(new ui::Layer(ui::LAYER_SOLID_COLOR)),
evas_touch_point_list_nth_xy_get(evas_, i, &pt.x, &pt.y);
state = evas_touch_point_list_nth_state_get(evas_, i);
+ // Filter out events jittery for single-touch gestures.
+ if (count == 1) {
+ if (state == EVAS_TOUCH_POINT_DOWN) {
+ should_check_move_threshold_ = true;
+ last_single_press_down_position_ = gfx::Point(pt.x, pt.y);
+ } else if (should_check_move_threshold_ &&
+ state == EVAS_TOUCH_POINT_MOVE) {
+ gfx::Point current_point(pt.x, pt.y);
+ gfx::Vector2d diff = current_point - last_single_press_down_position_;
+
+ unsigned threshold =
+ elm_config_scroll_thumbscroll_threshold_get();
+ if (diff.LengthSquared() < threshold * threshold)
+ return;
+
+ should_check_move_threshold_ = false;
+ }
+ }
+
ui::TouchEvent touch_event = MakeTouchEvent(pt, state, id, content_image_);
HandleTouchEvent(&touch_event);
}