forked from enlightenment/enlightenment
a much requested feature: drag-only edge bindings
ticket #281 SVN revision: 83628
This commit is contained in:
parent
6f2737928d
commit
41759238cd
|
@ -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
1
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:
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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__)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))) ||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue