a much requested feature: drag-only edge bindings

ticket #281


SVN revision: 83628
This commit is contained in:
Mike Blumenkrantz 2013-02-05 13:13:33 +00:00
parent 6f2737928d
commit 41759238cd
13 changed files with 112 additions and 51 deletions

View File

@ -2,6 +2,7 @@
* improve load time of apps dialogs
* fix bug where edge flips would stop functioning after dragging to an invalid edge containing a shelf
* edge bindings can now be set to "drag only"
2013-02-04 Mike Blumenkrantz

1
NEWS
View File

@ -30,6 +30,7 @@ Additions:
* added option to disable comp effects on screen
* added options and functionality for "fast" composite effects
* split comp window match settings into separate dialog
* edge bindings can now be set to "drag only"
Changes:
Modules:

View File

@ -180,32 +180,35 @@ group { name: "e/modules/conf_edgebindings/selection";
fill.smooth: 0;
}
}
part { name: "e.swallow.check"; type: SWALLOW;
part { name: "e.box"; type: BOX;
description { state: "default" 0.0;
rel1 {
relative: 1 1;
offset: 5 4;
to_x: "e.swallow.background";
to_y: "e.text.description";
relative: 1 1;
offset: 50 4;
to_x: "e.edge.bottom_right";
to_y: "e.text.description";
}
rel2 {
relative: 1 1;
offset: -5 24;
to_y: "e.text.description";
offset: -50 24;
to_y: "e.text.description";
}
box { layout: "horizontal";
padding: 0 0;
align: 0.5 0.5;
min: 1 1;
}
}
}
part { name: "e.swallow.slider"; type: SWALLOW;
description { state: "default" 0.0;
rel1 {
relative: 1 1;
offset: 5 1;
to_x: "e.edge.bottom_right";
to_y: "e.swallow.check";
relative: 1 1;
offset: 5 1;
to_x: "e.edge.bottom_right";
to_y: "e.box";
}
rel2 {
relative: 1 1;
offset: -5 -1;
offset: -5 -1;
}
}
}
@ -213,13 +216,12 @@ offset: -5 -1;
scale: 1;
description { state: "default" 0.0;
rel1 {
relative: 1 0;
offset: 5 4;
to_x: "e.swallow.background";
relative: 1 0;
offset: 80 4;
to_x: "e.edge.right";
}
rel2 {
relative: 1 1;
offset: -5 -45;
offset: -80 -45;
}
text {
style: "edge_binding_style";

View File

@ -61,7 +61,7 @@ e_bindings_init(void)
ebk->any_mod, ebk->action, ebk->params);
EINA_LIST_FOREACH(e_bindings->edge_bindings, l, ebe)
e_bindings_edge_add(ebe->context, ebe->edge, ebe->modifiers,
e_bindings_edge_add(ebe->context, ebe->edge, ebe->drag_only, ebe->modifiers,
ebe->any_mod, ebe->action, ebe->params, ebe->delay);
EINA_LIST_FOREACH(e_bindings->signal_bindings, l, ebs)
@ -179,7 +179,7 @@ e_bindings_edge_reset(void)
E_FREE_LIST(edge_bindings, _e_bindings_edge_free);
EINA_LIST_FOREACH(e_bindings->edge_bindings, l, ebe)
e_bindings_edge_add(ebe->context, ebe->edge, ebe->modifiers,
e_bindings_edge_add(ebe->context, ebe->edge, ebe->drag_only, ebe->modifiers,
ebe->any_mod, ebe->action, ebe->params, ebe->delay);
}
@ -604,7 +604,7 @@ e_bindings_key_up_event_find(E_Binding_Context ctxt, Ecore_Event_Key *ev)
}
EAPI void
e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay)
e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay)
{
E_Binding_Edge *binding;
@ -614,6 +614,7 @@ e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier
binding->mod = mod;
binding->any_mod = any_mod;
binding->delay = delay;
binding->drag_only = drag_only;
if (action) binding->action = eina_stringshare_add(action);
if (params) binding->params = eina_stringshare_add(params);
edge_bindings = eina_list_append(edge_bindings, binding);
@ -677,7 +678,7 @@ e_bindings_edge_get(const char *action, E_Zone_Edge edge, int click)
}
EAPI void
e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay)
e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay)
{
E_Binding_Edge *binding;
Eina_List *l, *ll;
@ -691,6 +692,7 @@ e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier
(binding->mod == mod) &&
((binding->delay * 1000) == (delay * 1000)) &&
(binding->any_mod == any_mod) &&
(binding->drag_only == drag_only) &&
(((binding->action) && (action) && (!strcmp(binding->action, action))) ||
((!binding->action) && (!action))) &&
(((binding->params) && (params) && (!strcmp(binding->params, params))) ||
@ -727,6 +729,7 @@ e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Z
{
/* A value of <= -1.0 for the delay indicates it as a mouse-click binding on that edge */
if (((binding->edge == ev->edge)) && (binding->delay >= 0.0) &&
((binding->drag_only == ev->drag) || ev->drag) &&
((binding->any_mod) || (binding->mod == mod)))
{
if (_e_bindings_context_match(binding->ctxt, ctxt))
@ -817,7 +820,7 @@ e_bindings_edge_down_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event
EINA_LIST_FOREACH(edge_bindings, l, binding)
{
if (((binding->edge == ev->edge)) && (binding->delay == -1.0 * ev->button) &&
((binding->any_mod) || (binding->mod == mod)))
(!binding->drag_only) && ((binding->any_mod) || (binding->mod == mod)))
{
if (_e_bindings_context_match(binding->ctxt, ctxt))
{

View File

@ -63,12 +63,13 @@ struct _E_Binding_Edge
E_Binding_Context ctxt;
E_Zone_Edge edge;
E_Binding_Modifier mod;
unsigned char any_mod : 1;
const char *action;
const char *params;
float delay;
Ecore_Timer *timer;
Eina_Bool any_mod : 1;
Eina_Bool drag_only : 1;
};
struct _E_Binding_Signal
@ -130,11 +131,11 @@ EAPI E_Action *e_bindings_key_up_event_handle(E_Binding_Context ctxt, E_Object
EAPI E_Action *e_bindings_key_down_event_find(E_Binding_Context ctxt, Ecore_Event_Key *ev);
EAPI E_Action *e_bindings_key_up_event_find(E_Binding_Context ctxt, Ecore_Event_Key *ev);
EAPI void e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay);
EAPI void e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay);
EAPI Eina_Bool e_bindings_edge_flippable_get(E_Zone_Edge edge);
EAPI Eina_Bool e_bindings_edge_non_flippable_get(E_Zone_Edge edge);
EAPI E_Binding_Edge *e_bindings_edge_get(const char *action, E_Zone_Edge edge, int click);
EAPI void e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay);
EAPI void e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay);
EAPI E_Action *e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev);
EAPI E_Action *e_bindings_edge_out_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev);
EAPI E_Action *e_bindings_edge_down_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev);

View File

@ -160,6 +160,12 @@ e_canvas_new(Ecore_X_Window win, int x, int y, int w, int h,
return ee;
}
EAPI const Eina_List *
e_canvas_list(void)
{
return _e_canvases;
}
/* local subsystem functions */
static Eina_Bool
_e_canvas_cb_flush(void *data __UNUSED__)

View File

@ -12,5 +12,6 @@ EAPI void e_canvas_idle_flush(void);
EAPI void e_canvas_rehint(void);
EAPI Ecore_Evas *e_canvas_new(Ecore_X_Window win, int x, int y, int w, int h, int direct_resize, int override, Ecore_X_Window *win_ret);
EAPI const Eina_List *e_canvas_list(void);
#endif
#endif

View File

@ -968,6 +968,7 @@ e_config_init(void)
E_CONFIG_VAL(D, T, params, STR);
E_CONFIG_VAL(D, T, edge, UCHAR);
E_CONFIG_VAL(D, T, any_mod, UCHAR);
E_CONFIG_VAL(D, T, drag_only, UCHAR);
E_CONFIG_VAL(D, T, delay, FLOAT);
_e_config_bindings_signal_edd = E_CONFIG_DD_NEW("E_Config_Binding_Signal",
@ -1886,6 +1887,7 @@ e_config_binding_edge_match(E_Config_Binding_Edge *eb_in)
(eb->any_mod == eb_in->any_mod) &&
(eb->edge == eb_in->edge) &&
(eb->delay == eb_in->delay) &&
(eb->drag_only == eb_in->drag_only) &&
(((eb->action) && (eb_in->action) && (!strcmp(eb->action, eb_in->action))) ||
((!eb->action) && (!eb_in->action))) &&
(((eb->params) && (eb_in->params) && (!strcmp(eb->params, eb_in->params))) ||

View File

@ -505,6 +505,7 @@ struct _E_Config_Binding_Edge
const char *params;
unsigned char edge;
unsigned char any_mod;
Eina_Bool drag_only;
};
struct _E_Config_Binding_Signal

View File

@ -2647,62 +2647,62 @@ _e_shelf_bindings_add(E_Shelf *es)
case E_GADCON_ORIENT_LEFT:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_LEFT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
case E_GADCON_ORIENT_RIGHT:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_RIGHT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
case E_GADCON_ORIENT_TOP:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_TOP,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
case E_GADCON_ORIENT_BOTTOM:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_BOTTOM,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
case E_GADCON_ORIENT_CORNER_TL:
case E_GADCON_ORIENT_CORNER_LT:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_TOP,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_LEFT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_TOP_LEFT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
case E_GADCON_ORIENT_CORNER_TR:
case E_GADCON_ORIENT_CORNER_RT:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_TOP,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_RIGHT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_TOP_RIGHT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
case E_GADCON_ORIENT_CORNER_BL:
case E_GADCON_ORIENT_CORNER_LB:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_BOTTOM,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_LEFT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_BOTTOM_LEFT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
case E_GADCON_ORIENT_CORNER_BR:
case E_GADCON_ORIENT_CORNER_RB:
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_BOTTOM,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_RIGHT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
e_bindings_edge_add(E_BINDING_CONTEXT_ZONE, E_ZONE_EDGE_BOTTOM_RIGHT,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
break;
}
}
@ -2716,7 +2716,7 @@ _e_shelf_bindings_del(E_Shelf *es)
snprintf(buf, sizeof(buf), "shelf.%d", es->id);
for (edge = E_ZONE_EDGE_LEFT; edge <= E_ZONE_EDGE_BOTTOM_LEFT; edge++)
e_bindings_edge_del(E_BINDING_CONTEXT_ZONE, edge,
E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
0, E_BINDING_MODIFIER_NONE, 1, buf, NULL, 0);
}
static Eina_Bool

View File

@ -1547,6 +1547,8 @@ _e_zone_cb_mouse_in(void *data,
E_Event_Zone_Edge *zev;
E_Zone_Edge edge;
E_Zone *zone;
const Eina_List *l;
Ecore_Evas *ee;
ev = event;
zone = data;
@ -1560,6 +1562,14 @@ _e_zone_cb_mouse_in(void *data,
zev->x = ev->root.x;
zev->y = ev->root.y;
zev->modifiers = ev->modifiers;
EINA_LIST_FOREACH(e_canvas_list(), l, ee)
{
/* FIXME: comp */
if (!evas_pointer_button_down_mask_get(ecore_evas_get(ee))) continue;
zev->drag = 1;
break;
}
ecore_event_add(E_EVENT_ZONE_EDGE_IN, zev, NULL, NULL);
e_bindings_edge_in_event_handle(E_BINDING_CONTEXT_ZONE, E_OBJECT(zone), zev);
@ -1575,6 +1585,8 @@ _e_zone_cb_mouse_out(void *data,
E_Event_Zone_Edge *zev;
E_Zone_Edge edge;
E_Zone *zone;
const Eina_List *l;
Ecore_Evas *ee;
ev = event;
zone = data;
@ -1588,6 +1600,14 @@ _e_zone_cb_mouse_out(void *data,
zev->x = ev->root.x;
zev->y = ev->root.y;
zev->modifiers = ev->modifiers;
EINA_LIST_FOREACH(e_canvas_list(), l, ee)
{
/* FIXME: comp */
if (!evas_pointer_button_down_mask_get(ecore_evas_get(ee))) continue;
zev->drag = 1;
break;
}
ecore_event_add(E_EVENT_ZONE_EDGE_OUT, zev, NULL, NULL);
e_bindings_edge_out_event_handle(E_BINDING_CONTEXT_ZONE, E_OBJECT(zone), zev);
return ECORE_CALLBACK_PASS_ON;

View File

@ -127,6 +127,7 @@ struct _E_Event_Zone_Edge
int x, y;
int modifiers;
int button;
Eina_Bool drag : 1;
};
EINTERN int e_zone_init(void);

View File

@ -65,6 +65,7 @@ struct _E_Config_Dialog_Data
const char *cur;
double delay;
int click;
int drag_only;
int button;
int cur_act, add;
E_Zone_Edge edge;
@ -76,7 +77,7 @@ struct _E_Config_Dialog_Data
{
Evas_Object *o_add, *o_mod, *o_del, *o_del_all;
Evas_Object *o_binding_list, *o_action_list;
Evas_Object *o_params, *o_selector, *o_slider, *o_check, *o_button;
Evas_Object *o_params, *o_selector, *o_slider, *o_check, *o_check2, *o_button;
} gui;
const char *params;
@ -139,6 +140,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
bi2->modifiers = bi->modifiers;
bi2->any_mod = bi->any_mod;
bi2->delay = bi->delay;
bi2->drag_only = bi->drag_only;
bi2->action = eina_stringshare_ref(bi->action);
bi2->params = eina_stringshare_ref(bi->params);
@ -196,7 +198,7 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
EINA_LIST_FREE(e_bindings->edge_bindings, bi)
{
e_bindings_edge_del(bi->context, bi->edge, bi->modifiers, bi->any_mod,
e_bindings_edge_del(bi->context, bi->edge, bi->drag_only, bi->modifiers, bi->any_mod,
bi->action, bi->params, bi->delay);
eina_stringshare_del(bi->action);
eina_stringshare_del(bi->params);
@ -212,13 +214,14 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
bi->modifiers = bi2->modifiers;
bi->any_mod = bi2->any_mod;
bi->delay = bi2->delay;
bi->drag_only = bi2->drag_only;
bi->action =
((!bi2->action) || (!bi2->action[0])) ? NULL : eina_stringshare_add(bi2->action);
bi->params =
((!bi2->params) || (!bi2->params[0])) ? NULL : eina_stringshare_add(bi2->params);
e_bindings->edge_bindings = eina_list_append(e_bindings->edge_bindings, bi);
e_bindings_edge_add(bi->context, bi->edge, bi->modifiers, bi->any_mod,
e_bindings_edge_add(bi->context, bi->edge, bi->drag_only, bi->modifiers, bi->any_mod,
bi->action, bi->params, bi->delay);
}
@ -389,6 +392,7 @@ _modify_edge_binding_cb(void *data, void *data2 __UNUSED__)
bi = eina_list_nth(cfdata->binding.edge, n);
cfdata->locals.edge = bi->edge;
cfdata->locals.drag_only = bi->drag_only;
cfdata->locals.delay = ((double)bi->delay);
if (bi->delay <= -1.0) cfdata->locals.click = 1, cfdata->locals.button = -bi->delay;
else cfdata->locals.click = 0, cfdata->locals.button = 0;
@ -879,11 +883,23 @@ _edge_grab_wnd_show(E_Config_Dialog_Data *cfdata)
cfdata->gui.o_check = os = e_widget_check_add(evas, _("Clickable edge"), &(cfdata->locals.click));
e_widget_size_min_resize(os);
edje_object_part_swallow(o, "e.swallow.check", os);
e_widget_on_change_hook_set(os, _edge_grab_wnd_check_changed_cb, cfdata);
edje_object_part_box_append(o, "e.box", os);
evas_object_show(os);
if (cfdata->locals.click)
e_widget_disabled_set(cfdata->gui.o_slider, 1);
e_widget_size_min_get(os, &minw, &minh);
edje_extern_object_min_size_set(os, minw, minh);
cfdata->gui.o_check2 = os = e_widget_check_add(evas, _("Drag only"), &(cfdata->locals.drag_only));
e_widget_size_min_resize(os);
e_widget_on_change_hook_set(os, _edge_grab_wnd_check_changed_cb, cfdata);
edje_object_part_box_append(o, "e.box", os);
evas_object_show(os);
e_widget_size_min_get(os, &minw, &minh);
edje_extern_object_min_size_set(os, minw, minh);
e_widget_disabled_set(cfdata->gui.o_slider, cfdata->locals.click);
e_widget_disabled_set(cfdata->gui.o_check2, cfdata->locals.click);
e_widget_disabled_set(cfdata->gui.o_check, cfdata->locals.drag_only);
edje_object_part_text_set(o, "e.text.description", TEXT_PRESS_EDGE_SEQUENCE);
@ -971,7 +987,6 @@ _edge_grab_wnd_check_changed_cb(void *data, Evas_Object *obj __UNUSED__)
{
if (cfdata->locals.edge && cfdata->locals.button)
label = _edge_binding_text_get(cfdata->locals.edge, -1.0 * cfdata->locals.button, cfdata->locals.modifiers);
e_widget_disabled_set(cfdata->gui.o_slider, 1);
}
else
{
@ -979,6 +994,9 @@ _edge_grab_wnd_check_changed_cb(void *data, Evas_Object *obj __UNUSED__)
label = _edge_binding_text_get(cfdata->locals.edge, ((float)cfdata->locals.delay), cfdata->locals.modifiers);
e_widget_disabled_set(cfdata->gui.o_slider, 0);
}
e_widget_disabled_set(cfdata->gui.o_slider, cfdata->locals.click);
e_widget_disabled_set(cfdata->gui.o_check2, cfdata->locals.click);
e_widget_disabled_set(cfdata->gui.o_check, cfdata->locals.drag_only);
edje_object_part_text_set(cfdata->gui.o_selector, "e.text.selection", label);
E_FREE(label);
@ -1083,6 +1101,7 @@ _edge_grab_wnd_selection_apply(E_Config_Dialog_Data *cfdata)
EINA_LIST_FOREACH(cfdata->binding.edge, l, bi)
if ((bi->modifiers == cfdata->locals.modifiers) &&
(bi->edge == cfdata->locals.edge) &&
(bi->drag_only == cfdata->locals.drag_only) &&
((bi->delay * 1000) == (cfdata->locals.delay * 1000)))
{
found = 1;
@ -1100,6 +1119,7 @@ _edge_grab_wnd_selection_apply(E_Config_Dialog_Data *cfdata)
if (bi == bi2) continue;
if ((bi->modifiers == cfdata->locals.modifiers) &&
(bi->edge == cfdata->locals.edge) &&
(bi->drag_only == cfdata->locals.drag_only) &&
((bi->delay * 1000) == (cfdata->locals.delay * 1000)))
{
found = 1;
@ -1121,6 +1141,7 @@ _edge_grab_wnd_selection_apply(E_Config_Dialog_Data *cfdata)
bi->action = NULL;
bi->params = NULL;
bi->modifiers = cfdata->locals.modifiers;
bi->drag_only = cfdata->locals.drag_only;
cfdata->binding.edge = eina_list_append(cfdata->binding.edge, bi);
}
else
@ -1133,6 +1154,7 @@ _edge_grab_wnd_selection_apply(E_Config_Dialog_Data *cfdata)
bi->modifiers = cfdata->locals.modifiers;
bi->delay = cfdata->locals.delay;
bi->edge = cfdata->locals.edge;
bi->drag_only = cfdata->locals.drag_only;
}
}