diff --git a/ChangeLog b/ChangeLog index 4644bbdb3..b80475d5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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 diff --git a/NEWS b/NEWS index f40a929d0..4651f1d6c 100644 --- a/NEWS +++ b/NEWS @@ -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: diff --git a/data/themes/edc/edgebindings.edc b/data/themes/edc/edgebindings.edc index 9b9b25146..bf5cc07e5 100644 --- a/data/themes/edc/edgebindings.edc +++ b/data/themes/edc/edgebindings.edc @@ -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"; diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c index ec52b980a..09aa77ca2 100644 --- a/src/bin/e_bindings.c +++ b/src/bin/e_bindings.c @@ -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)) { diff --git a/src/bin/e_bindings.h b/src/bin/e_bindings.h index 8026061d4..668698bbe 100644 --- a/src/bin/e_bindings.h +++ b/src/bin/e_bindings.h @@ -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); diff --git a/src/bin/e_canvas.c b/src/bin/e_canvas.c index 24762aaf6..636aa8cb0 100644 --- a/src/bin/e_canvas.c +++ b/src/bin/e_canvas.c @@ -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__) diff --git a/src/bin/e_canvas.h b/src/bin/e_canvas.h index 6529d8bf7..59050c23b 100644 --- a/src/bin/e_canvas.h +++ b/src/bin/e_canvas.h @@ -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 diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 4545bfb6d..16017a8c8 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -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))) || diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 7afaeb37b..db44a4c58 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -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 diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index fd772c688..dc979a767 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -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 diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index 946e3172a..dc70e2abb 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -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; diff --git a/src/bin/e_zone.h b/src/bin/e_zone.h index e56121e9b..fcc0a5d6a 100644 --- a/src/bin/e_zone.h +++ b/src/bin/e_zone.h @@ -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); diff --git a/src/modules/conf_edgebindings/e_int_config_edgebindings.c b/src/modules/conf_edgebindings/e_int_config_edgebindings.c index 587fe684a..97f9af7e9 100644 --- a/src/modules/conf_edgebindings/e_int_config_edgebindings.c +++ b/src/modules/conf_edgebindings/e_int_config_edgebindings.c @@ -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; } }