diff options
Diffstat (limited to 'tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc')
-rwxr-xr-x | tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc b/tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc index 9c231a04683c..85ceb88aef10 100755 --- a/tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc +++ b/tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc @@ -189,6 +189,7 @@ RenderWidgetHostViewEfl::RenderWidgetHostViewEfl(RenderWidgetHost* widget, 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)), @@ -1547,6 +1548,25 @@ void RenderWidgetHostViewEfl::ProcessTouchEvents() { 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); } |