diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c index 59250d7f7..0ddf5b21d 100644 --- a/src/bin/e_gadget.c +++ b/src/bin/e_gadget.c @@ -1514,11 +1514,8 @@ _site_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, vo } else if (ev->button == 3) { - Evas_Coord dx, dy; - - dx = ev->canvas.x - zgs->down_3_x; - dy = ev->canvas.y - zgs->down_3_y; - if (((dx * dx) + (dy * dy)) < (5 * 5)) + if (!is_dragged(ev->canvas.x - zgs->down_3_x, + ev->canvas.y - zgs->down_3_y)) { E_Gadget_Config *zgc; Evas_Object *g = NULL; @@ -1541,11 +1538,8 @@ _site_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, if ((zgs->down_timer) || (zgs->longpressed)) { - Evas_Coord dx, dy; - - dx = ev->cur.canvas.x - zgs->down_1_x; - dy = ev->cur.canvas.y - zgs->down_1_y; - if (((dx * dx) + (dy * dy)) >= (5 * 5)) + if (is_dragged(ev->cur.canvas.x - zgs->down_1_x, + ev->cur.canvas.y - zgs->down_1_y)) { if (zgs->down_timer) { diff --git a/src/bin/e_utils.h b/src/bin/e_utils.h index 0f451a196..cb3cf089f 100644 --- a/src/bin/e_utils.h +++ b/src/bin/e_utils.h @@ -82,5 +82,14 @@ dblequal(double a, double b) return fabs(a - b) < DBL_EPSILON; } +static inline Eina_Bool +is_dragged(int dx, int dy) +{ + Evas_Coord resist = elm_config_finger_size_get() / 2; + + if ((dx * dx) + (dy * dy) > resist) return EINA_TRUE; + return EINA_FALSE; +} + #endif #endif diff --git a/src/modules/pager/e_mod_config.c b/src/modules/pager/e_mod_config.c index 5a78db9fb..4fa9d334a 100644 --- a/src/modules/pager/e_mod_config.c +++ b/src/modules/pager/e_mod_config.c @@ -29,7 +29,7 @@ struct _E_Config_Dialog_Data Evas_Object *ob1, *ob2, *ob3; Eina_List *popup_list, *urgent_list; } gui; - int drag_resist, flip_desk, show_desk_names; + int flip_desk, show_desk_names; E_Config_Dialog *cfd; }; @@ -98,7 +98,6 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->popup.urgent_speed = pager_config->popup_urgent_speed; cfdata->popup.height = pager_config->popup_height; cfdata->popup.act_height = pager_config->popup_act_height; - cfdata->drag_resist = pager_config->drag_resist; cfdata->btn.drag = pager_config->btn_drag; cfdata->btn.noplace = pager_config->btn_noplace; cfdata->btn.desk = pager_config->btn_desk; @@ -187,11 +186,6 @@ _adv_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) ow = e_widget_check_add(evas, _("Always show desktop names"), &(cfdata->show_desk_names)); e_widget_list_object_append(ol, ow, 1, 0, 0.5); - ow = e_widget_label_add(evas, _("Resistance to dragging")); - e_widget_list_object_append(ol, ow, 1, 0, 0.5); - ow = e_widget_slider_add(evas, 1, 0, _("%.0f pixels"), 0.0, 10.0, 1.0, 0, NULL, - &(cfdata->drag_resist), 100); - e_widget_list_object_append(ol, ow, 1, 0, 0.5); #if 0 ow = e_widget_label_add(evas, _("Select and Slide button")); @@ -302,7 +296,6 @@ _adv_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) pager_config->show_desk_names = cfdata->show_desk_names; pager_config->popup_height = cfdata->popup.height; pager_config->popup_act_height = cfdata->popup.act_height; - pager_config->drag_resist = cfdata->drag_resist; pager_config->btn_drag = cfdata->btn.drag; pager_config->btn_noplace = cfdata->btn.noplace; pager_config->btn_desk = cfdata->btn.desk; @@ -328,7 +321,6 @@ _adv_check_changed(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdat if ((int)pager_config->show_desk_names != cfdata->show_desk_names) return 1; if (pager_config->popup_height != cfdata->popup.height) return 1; if (pager_config->popup_act_height != cfdata->popup.act_height) return 1; - if ((int)pager_config->drag_resist != cfdata->drag_resist) return 1; if (pager_config->btn_drag != cfdata->btn.drag) return 1; if (pager_config->btn_noplace != cfdata->btn.noplace) return 1; if (pager_config->btn_desk != cfdata->btn.desk) return 1; diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index a2f4f258b..710ec77e4 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -1162,8 +1162,6 @@ _pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI Evas_Coord x, y, w, h; const char *drag_types[] = { "enlightenment/pager_win", "enlightenment/border" }; - Evas_Coord dx, dy; - unsigned int resist = 0; ev = event_info; pw = data; @@ -1176,13 +1174,8 @@ _pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI /* prevent drag for a few pixels */ if (!pw->drag.start) return; - dx = pw->drag.x - ev->cur.output.x; - dy = pw->drag.y - ev->cur.output.y; - if (pw->desk->pager) - resist = pager_config->drag_resist; - - if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <= - (resist * resist)) return; + if (!is_dragged(pw->drag.x - ev->cur.output.x, + pw->drag.y - ev->cur.output.y)) return; pw->desk->pager->dragging = 1; pw->drag.start = 0; @@ -1581,8 +1574,6 @@ _pager_desk_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA { Evas_Event_Mouse_Move *ev; Pager_Desk *pd; - Evas_Coord dx, dy; - unsigned int resist = 0; E_Drag *drag; Evas_Object *o; Evas_Coord x, y, w, h; @@ -1595,13 +1586,8 @@ _pager_desk_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA /* prevent drag for a few pixels */ if (pd->drag.start) { - dx = pd->drag.x - ev->cur.output.x; - dy = pd->drag.y - ev->cur.output.y; - if ((pd->pager) && (pd->pager->inst)) - resist = pager_config->drag_resist; - - if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <= - (resist * resist)) return; + if (!is_dragged(pd->drag.x - ev->cur.output.x, + pd->drag.y - ev->cur.output.y)) return; if (pd->pager) pd->pager->dragging = 1; pd->drag.start = 0; diff --git a/src/modules/pager/gadget/config.c b/src/modules/pager/gadget/config.c index 331882b41..b7ac10adf 100644 --- a/src/modules/pager/gadget/config.c +++ b/src/modules/pager/gadget/config.c @@ -20,7 +20,6 @@ struct _Config_Objects Evas_Object *o_show_desk_names; Evas_Object *o_popup_act_height; Evas_Object *o_popup_height; - Evas_Object *o_drag_resist; Evas_Object *o_btn_drag; Evas_Object *o_btn_noplace; Evas_Object *o_btn_desk; @@ -101,8 +100,6 @@ _config_value_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void elm_slider_value_get(pager_gadget_config_objects->o_popup_height); pager_config->popup_act_height = elm_slider_value_get(pager_gadget_config_objects->o_popup_act_height); - pager_config->drag_resist = - elm_slider_value_get(pager_gadget_config_objects->o_drag_resist); val = elm_check_state_get(pager_gadget_config_objects->o_permanent); if (val != pager_config->permanent_plain) changed = EINA_TRUE; @@ -350,26 +347,6 @@ _config_create_pages(Evas_Object *parent) evas_object_show(ow); pager_gadget_config_objects->o_show_desk_names = ow; - ow = elm_label_add(m); - elm_object_text_set(ow, _("Resistance to dragging")); - elm_table_pack(tb, ow, 0, 3, 1, 1); - E_ALIGN(ow, 0.0, 0.0); - E_WEIGHT(ow, EVAS_HINT_EXPAND, 0); - evas_object_show(ow); - - ow = elm_slider_add(tb); - elm_slider_min_max_set(ow, 0, 10); - elm_slider_step_set(ow, 1); - elm_slider_value_set(ow, pager_config->drag_resist); - elm_slider_unit_format_set(ow, _("%.0f pixels")); - elm_table_pack(tb, ow, 0, 4, 1, 1); - E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL); - E_WEIGHT(ow, EVAS_HINT_EXPAND, 0); - evas_object_smart_callback_add(ow, "delay,changed", - _config_value_changed, NULL); - evas_object_show(ow); - pager_gadget_config_objects->o_drag_resist = ow; - #if 0 ow = elm_label_add(m); elm_object_text_set(ow, _("Select and Slide button")); diff --git a/src/modules/pager/gadget/pager.c b/src/modules/pager/gadget/pager.c index 9389d781e..35ebb71e7 100644 --- a/src/modules/pager/gadget/pager.c +++ b/src/modules/pager/gadget/pager.c @@ -1985,12 +1985,15 @@ _pager_window_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA Evas_Event_Mouse_Up *ev = event_info; Pager_Win *pw = data; - if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) + { + pw->drag.button = 0; + return; + } + pw->drag.button = 0; if (_pager_check_modifiers(ev->modifiers)) return; evas_object_smart_callback_call(e_gadget_site_get(pw->desk->pager->inst->o_pager), "gadget_site_unlocked", NULL); - - pw->drag.button = 0; } static void @@ -1998,6 +2001,7 @@ _pager_window_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI { Evas_Event_Mouse_Down *ev = event_info; Pager_Win *pw; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; if (_pager_check_modifiers(ev->modifiers)) return; @@ -2039,8 +2043,6 @@ _pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI Evas_Coord x, y, w, h; const char *drag_types[] = { "enlightenment/pager_win", "enlightenment/border" }; - Evas_Coord dx, dy; - unsigned int resist = 0; pw = data; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; @@ -2053,13 +2055,8 @@ _pager_window_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI /* prevent drag for a few pixels */ if (!pw->drag.start) return; - dx = pw->drag.x - ev->cur.output.x; - dy = pw->drag.y - ev->cur.output.y; - if (pw->desk->pager) - resist = pager_config->drag_resist; - - if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <= - (resist * resist)) return; + if (!is_dragged(pw->drag.x - ev->cur.output.x, + pw->drag.y - ev->cur.output.y)) return; pw->desk->pager->dragging = 1; pw->drag.start = 0; @@ -2427,7 +2424,12 @@ _pager_desk_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U Pager_Desk *pd; Pager *p; - if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) + { + pd->drag.start = 0; + pd->drag.in_pager = 0; + return; + } if (_pager_check_modifiers(ev->modifiers)) return; pd = data; @@ -2460,8 +2462,6 @@ _pager_desk_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA { Evas_Event_Mouse_Move *ev = event_info; Pager_Desk *pd; - Evas_Coord dx, dy; - unsigned int resist = 0; E_Drag *drag; Evas_Object *o; Evas_Coord x, y, w, h; @@ -2475,14 +2475,8 @@ _pager_desk_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA /* prevent drag for a few pixels */ if (pd->drag.start) { - dx = pd->drag.x - ev->cur.output.x; - dy = pd->drag.y - ev->cur.output.y; - if ((pd->pager) && (pd->pager->inst)) - resist = pager_config->drag_resist; - - if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <= - (resist * resist)) return; - + if (!is_dragged(pd->drag.x - ev->cur.output.x, + pd->drag.y - ev->cur.output.y)) return; if (pd->pager) pd->pager->dragging = 1; pd->drag.start = 0; }