gadgets - get long press plus dnd to behave nice
we had multiple drag resistance values here - unify with 1 and make it work, now it gets it right deciding between dnd and a long press menu etc. etc. ...
This commit is contained in:
parent
63a4475497
commit
c49f49829f
|
@ -1514,11 +1514,8 @@ _site_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, vo
|
||||||
}
|
}
|
||||||
else if (ev->button == 3)
|
else if (ev->button == 3)
|
||||||
{
|
{
|
||||||
Evas_Coord dx, dy;
|
if (!is_dragged(ev->canvas.x - zgs->down_3_x,
|
||||||
|
ev->canvas.y - zgs->down_3_y))
|
||||||
dx = ev->canvas.x - zgs->down_3_x;
|
|
||||||
dy = ev->canvas.y - zgs->down_3_y;
|
|
||||||
if (((dx * dx) + (dy * dy)) < (5 * 5))
|
|
||||||
{
|
{
|
||||||
E_Gadget_Config *zgc;
|
E_Gadget_Config *zgc;
|
||||||
Evas_Object *g = NULL;
|
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))
|
if ((zgs->down_timer) || (zgs->longpressed))
|
||||||
{
|
{
|
||||||
Evas_Coord dx, dy;
|
if (is_dragged(ev->cur.canvas.x - zgs->down_1_x,
|
||||||
|
ev->cur.canvas.y - zgs->down_1_y))
|
||||||
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 (zgs->down_timer)
|
if (zgs->down_timer)
|
||||||
{
|
{
|
||||||
|
|
|
@ -82,5 +82,14 @@ dblequal(double a, double b)
|
||||||
return fabs(a - b) < DBL_EPSILON;
|
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
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,7 +29,7 @@ struct _E_Config_Dialog_Data
|
||||||
Evas_Object *ob1, *ob2, *ob3;
|
Evas_Object *ob1, *ob2, *ob3;
|
||||||
Eina_List *popup_list, *urgent_list;
|
Eina_List *popup_list, *urgent_list;
|
||||||
} gui;
|
} gui;
|
||||||
int drag_resist, flip_desk, show_desk_names;
|
int flip_desk, show_desk_names;
|
||||||
E_Config_Dialog *cfd;
|
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.urgent_speed = pager_config->popup_urgent_speed;
|
||||||
cfdata->popup.height = pager_config->popup_height;
|
cfdata->popup.height = pager_config->popup_height;
|
||||||
cfdata->popup.act_height = pager_config->popup_act_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.drag = pager_config->btn_drag;
|
||||||
cfdata->btn.noplace = pager_config->btn_noplace;
|
cfdata->btn.noplace = pager_config->btn_noplace;
|
||||||
cfdata->btn.desk = pager_config->btn_desk;
|
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"),
|
ow = e_widget_check_add(evas, _("Always show desktop names"),
|
||||||
&(cfdata->show_desk_names));
|
&(cfdata->show_desk_names));
|
||||||
e_widget_list_object_append(ol, ow, 1, 0, 0.5);
|
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
|
#if 0
|
||||||
ow = e_widget_label_add(evas, _("Select and Slide button"));
|
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->show_desk_names = cfdata->show_desk_names;
|
||||||
pager_config->popup_height = cfdata->popup.height;
|
pager_config->popup_height = cfdata->popup.height;
|
||||||
pager_config->popup_act_height = cfdata->popup.act_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_drag = cfdata->btn.drag;
|
||||||
pager_config->btn_noplace = cfdata->btn.noplace;
|
pager_config->btn_noplace = cfdata->btn.noplace;
|
||||||
pager_config->btn_desk = cfdata->btn.desk;
|
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 ((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_height != cfdata->popup.height) return 1;
|
||||||
if (pager_config->popup_act_height != cfdata->popup.act_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_drag != cfdata->btn.drag) return 1;
|
||||||
if (pager_config->btn_noplace != cfdata->btn.noplace) return 1;
|
if (pager_config->btn_noplace != cfdata->btn.noplace) return 1;
|
||||||
if (pager_config->btn_desk != cfdata->btn.desk) return 1;
|
if (pager_config->btn_desk != cfdata->btn.desk) return 1;
|
||||||
|
|
|
@ -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;
|
Evas_Coord x, y, w, h;
|
||||||
const char *drag_types[] =
|
const char *drag_types[] =
|
||||||
{ "enlightenment/pager_win", "enlightenment/border" };
|
{ "enlightenment/pager_win", "enlightenment/border" };
|
||||||
Evas_Coord dx, dy;
|
|
||||||
unsigned int resist = 0;
|
|
||||||
|
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
pw = data;
|
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 */
|
/* prevent drag for a few pixels */
|
||||||
if (!pw->drag.start) return;
|
if (!pw->drag.start) return;
|
||||||
|
|
||||||
dx = pw->drag.x - ev->cur.output.x;
|
if (!is_dragged(pw->drag.x - ev->cur.output.x,
|
||||||
dy = pw->drag.y - ev->cur.output.y;
|
pw->drag.y - ev->cur.output.y)) return;
|
||||||
if (pw->desk->pager)
|
|
||||||
resist = pager_config->drag_resist;
|
|
||||||
|
|
||||||
if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <=
|
|
||||||
(resist * resist)) return;
|
|
||||||
|
|
||||||
pw->desk->pager->dragging = 1;
|
pw->desk->pager->dragging = 1;
|
||||||
pw->drag.start = 0;
|
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;
|
Evas_Event_Mouse_Move *ev;
|
||||||
Pager_Desk *pd;
|
Pager_Desk *pd;
|
||||||
Evas_Coord dx, dy;
|
|
||||||
unsigned int resist = 0;
|
|
||||||
E_Drag *drag;
|
E_Drag *drag;
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
Evas_Coord x, y, w, h;
|
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 */
|
/* prevent drag for a few pixels */
|
||||||
if (pd->drag.start)
|
if (pd->drag.start)
|
||||||
{
|
{
|
||||||
dx = pd->drag.x - ev->cur.output.x;
|
if (!is_dragged(pd->drag.x - ev->cur.output.x,
|
||||||
dy = pd->drag.y - ev->cur.output.y;
|
pd->drag.y - ev->cur.output.y)) return;
|
||||||
if ((pd->pager) && (pd->pager->inst))
|
|
||||||
resist = pager_config->drag_resist;
|
|
||||||
|
|
||||||
if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <=
|
|
||||||
(resist * resist)) return;
|
|
||||||
|
|
||||||
if (pd->pager) pd->pager->dragging = 1;
|
if (pd->pager) pd->pager->dragging = 1;
|
||||||
pd->drag.start = 0;
|
pd->drag.start = 0;
|
||||||
|
|
|
@ -20,7 +20,6 @@ struct _Config_Objects
|
||||||
Evas_Object *o_show_desk_names;
|
Evas_Object *o_show_desk_names;
|
||||||
Evas_Object *o_popup_act_height;
|
Evas_Object *o_popup_act_height;
|
||||||
Evas_Object *o_popup_height;
|
Evas_Object *o_popup_height;
|
||||||
Evas_Object *o_drag_resist;
|
|
||||||
Evas_Object *o_btn_drag;
|
Evas_Object *o_btn_drag;
|
||||||
Evas_Object *o_btn_noplace;
|
Evas_Object *o_btn_noplace;
|
||||||
Evas_Object *o_btn_desk;
|
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);
|
elm_slider_value_get(pager_gadget_config_objects->o_popup_height);
|
||||||
pager_config->popup_act_height =
|
pager_config->popup_act_height =
|
||||||
elm_slider_value_get(pager_gadget_config_objects->o_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);
|
val = elm_check_state_get(pager_gadget_config_objects->o_permanent);
|
||||||
if (val != pager_config->permanent_plain)
|
if (val != pager_config->permanent_plain)
|
||||||
changed = EINA_TRUE;
|
changed = EINA_TRUE;
|
||||||
|
@ -350,26 +347,6 @@ _config_create_pages(Evas_Object *parent)
|
||||||
evas_object_show(ow);
|
evas_object_show(ow);
|
||||||
pager_gadget_config_objects->o_show_desk_names = 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
|
#if 0
|
||||||
ow = elm_label_add(m);
|
ow = elm_label_add(m);
|
||||||
elm_object_text_set(ow, _("Select and Slide button"));
|
elm_object_text_set(ow, _("Select and Slide button"));
|
||||||
|
|
|
@ -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;
|
Evas_Event_Mouse_Up *ev = event_info;
|
||||||
Pager_Win *pw = data;
|
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;
|
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);
|
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
|
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;
|
Evas_Event_Mouse_Down *ev = event_info;
|
||||||
Pager_Win *pw;
|
Pager_Win *pw;
|
||||||
|
|
||||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
||||||
if (_pager_check_modifiers(ev->modifiers)) 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;
|
Evas_Coord x, y, w, h;
|
||||||
const char *drag_types[] =
|
const char *drag_types[] =
|
||||||
{ "enlightenment/pager_win", "enlightenment/border" };
|
{ "enlightenment/pager_win", "enlightenment/border" };
|
||||||
Evas_Coord dx, dy;
|
|
||||||
unsigned int resist = 0;
|
|
||||||
pw = data;
|
pw = data;
|
||||||
|
|
||||||
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
|
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 */
|
/* prevent drag for a few pixels */
|
||||||
if (!pw->drag.start) return;
|
if (!pw->drag.start) return;
|
||||||
|
|
||||||
dx = pw->drag.x - ev->cur.output.x;
|
if (!is_dragged(pw->drag.x - ev->cur.output.x,
|
||||||
dy = pw->drag.y - ev->cur.output.y;
|
pw->drag.y - ev->cur.output.y)) return;
|
||||||
if (pw->desk->pager)
|
|
||||||
resist = pager_config->drag_resist;
|
|
||||||
|
|
||||||
if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <=
|
|
||||||
(resist * resist)) return;
|
|
||||||
|
|
||||||
pw->desk->pager->dragging = 1;
|
pw->desk->pager->dragging = 1;
|
||||||
pw->drag.start = 0;
|
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_Desk *pd;
|
||||||
Pager *p;
|
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;
|
if (_pager_check_modifiers(ev->modifiers)) return;
|
||||||
|
|
||||||
pd = data;
|
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;
|
Evas_Event_Mouse_Move *ev = event_info;
|
||||||
Pager_Desk *pd;
|
Pager_Desk *pd;
|
||||||
Evas_Coord dx, dy;
|
|
||||||
unsigned int resist = 0;
|
|
||||||
E_Drag *drag;
|
E_Drag *drag;
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
Evas_Coord x, y, w, h;
|
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 */
|
/* prevent drag for a few pixels */
|
||||||
if (pd->drag.start)
|
if (pd->drag.start)
|
||||||
{
|
{
|
||||||
dx = pd->drag.x - ev->cur.output.x;
|
if (!is_dragged(pd->drag.x - ev->cur.output.x,
|
||||||
dy = pd->drag.y - ev->cur.output.y;
|
pd->drag.y - ev->cur.output.y)) return;
|
||||||
if ((pd->pager) && (pd->pager->inst))
|
|
||||||
resist = pager_config->drag_resist;
|
|
||||||
|
|
||||||
if (((unsigned int)(dx * dx) + (unsigned int)(dy * dy)) <=
|
|
||||||
(resist * resist)) return;
|
|
||||||
|
|
||||||
if (pd->pager) pd->pager->dragging = 1;
|
if (pd->pager) pd->pager->dragging = 1;
|
||||||
pd->drag.start = 0;
|
pd->drag.start = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue