redo drag to be more indicative of results

This commit is contained in:
Mike Blumenkrantz 2014-09-05 16:01:20 -04:00
parent 61b7e4d18f
commit f572833e43
2 changed files with 129 additions and 25 deletions

View File

@ -46,11 +46,114 @@ collections {
}
group { name: "e/modules/desksanity/zoom/base"; program_source: "e";
parts {
rect { "drag_clip"; nomouse;
desc { hid; }
desc { "vis";
link.base: "e,state,dragging";
}
}
rect { "zoomt"; clip: "drag_clip"; nomouse;
desc {
min: 0 4;
max: -1 4;
rel2.relative: 1 0;
color: 51 153 255 0;
hid;
}
desc { "enable"; inherit: "default";
color: 51 153 255 200;
vis;
}
desc { "anim"; inherit: "enable";
rel1.relative: 0.5 0.5;
rel2.relative: 0.5 0.5;
}
}
rect { "zooml"; clip: "drag_clip"; nomouse;
desc {
min: 4 0;
max: 4 -1;
rel2.relative: 0 1;
color: 51 153 255 0;
hid;
}
desc { "enable"; inherit: "default";
color: 51 153 255 200;
vis;
}
desc { "anim"; inherit: "enable";
rel1.relative: 0.5 0.5;
rel2.relative: 0.5 0.5;
}
}
rect { "zoomr"; clip: "drag_clip"; nomouse;
desc {
min: 4 0;
max: 4 -1;
rel1.relative: 1 0;
color: 51 153 255 0;
hid;
}
desc { "enable"; inherit: "default";
color: 51 153 255 200;
vis;
}
desc { "anim"; inherit: "enable";
rel1.relative: 0.5 0.5;
rel2.relative: 0.5 0.5;
}
}
rect { "zoomb"; clip: "drag_clip"; nomouse;
desc {
min: 0 4;
max: -1 4;;
rel1.relative: 0 1;
color: 51 153 255 0;
hid;
}
desc { "enable"; inherit: "default";
color: 51 153 255 200;
vis;
}
desc { "anim"; inherit: "enable";
rel1.relative: 0.5 0.5;
rel2.relative: 0.5 0.5;
}
}
program { signal: "e,state,current";
after: "drag_start";
}
program { "drag_start"; filter: "drag_clip" "vis";
signal: "mouse,in"; source: "events";
action: STATE_SET "enable";
transition: LINEAR 0.1;
targets: "zoomt" "zooml" "zoomr" "zoomb";
after: "drag_anim";
}
program { filter: "drag_clip" "vis";
signal: "mouse,out"; source: "events";
action: STATE_SET "default";
transition: ACCEL 0.1;
targets: "zoomt" "zooml" "zoomr" "zoomb";
}
program { "drag_anim";
action: STATE_SET "anim";
transition: ACCEL 0.8;
targets: "zoomt" "zooml" "zoomr" "zoomb";
after: "drag_anim2";
}
program { "drag_anim2";
action: STATE_SET "default";
targets: "zoomt" "zooml" "zoomr" "zoomb";
after: "drag_anim";
}
swallow { "e.swallow.background"; clip: "clip";
}
rect { "fader"; nomouse;
rect { "fader";
desc {
color: 0 0 0 0;
link.base: "e,state,dragging";
link.transition: LINEAR 0.3;
link.base: "e,state,inactive";
link.transition: LINEAR 0.3;
link.after: "fade_post";
@ -65,7 +168,9 @@ collections {
}
}
rect { "clip";
desc { color: 255 255 255 0;
desc { hid; color: 255 255 255 0;
link.base: "e,state,dragging";
link.transition: LINEAR 0.3;
link.base: "e,state,inactive";
link.transition: LINEAR 0.3;
}
@ -78,6 +183,9 @@ collections {
program { signal: "e,state,inactive";
action: SIGNAL_EMIT "e,state,hiding" "e";
}
rect { "events"; repeat;
desc { color: 0 0 0 0; }
}
}
}
group { name: "e/modules/desksanity/zoom/scrollframe";
@ -239,16 +347,6 @@ collections {
link.base: "mouse,in" "events";
link.transition: LINEAR 0.2;
}
desc { "hid"; inherit: "default";
color: 255 255 255 0;
hid;
link.base: "e,drag,begin" "e";
link.transition: LINEAR 0.2;
link.after: "drag_begin";
program { "drag_begin";
action: SIGNAL_EMIT "e,drag,begun" "e";
}
}
}
proxy { "clone";
desc {
@ -294,7 +392,6 @@ collections {
after: "go_hid";
}
program { name: "go_hid";
signal: "e,drag,begin"; source: "e";
action: STATE_SET "default" 0.0;
transition: LINEAR 0.5;
target: "clone";

View File

@ -60,7 +60,6 @@ _hid(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, cons
e_comp_shape_queue(e_comp_util_evas_object_comp_get(obj));
evas_object_hide(obj);
evas_object_del(obj);
_drag_reset();
}
static void
@ -68,8 +67,15 @@ _zoom_hide(void)
{
Evas_Object *zoom_obj;
EINA_LIST_FREE(zoom_objs, zoom_obj)
edje_object_signal_emit(zoom_obj, "e,state,inactive", "e");
if (dm_drag)
EINA_LIST_FREE(zoom_objs, zoom_obj)
{
evas_object_hide(zoom_obj);
evas_object_del(zoom_obj);
}
else
EINA_LIST_FREE(zoom_objs, zoom_obj)
edje_object_signal_emit(zoom_obj, "e,state,inactive", "e");
E_FREE_LIST(handlers, ecore_event_handler_del);
e_comp_ungrab_input(e_comp_get(NULL), 1, 1);
e_comp_shape_queue(e_comp_get(NULL));
@ -82,6 +88,7 @@ static void
_dismiss()
{
_zoom_hide();
_drag_reset();
}
static void
@ -126,7 +133,8 @@ _client_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_Mov
evas_object_geometry_get(dm, &x, &y, &w, &h);
if (!dm_drag)
{
Evas_Object *m;
Evas_Object *m, *zoom_obj;
Eina_List *l;
/* no adjust, not X coords */
if ((abs(ev->root.x - dx) < DRAG_RESIST) && (abs(ev->root.y - dy) < DRAG_RESIST)) return ECORE_CALLBACK_RENEW;
@ -142,7 +150,13 @@ _client_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_Mov
evas_object_size_hint_min_set(m, w, h);
edje_object_part_swallow(dm_drag, "e.swallow.client", m);
evas_object_show(dm_drag);
edje_object_signal_emit(evas_object_smart_parent_get(dm), "e,drag,begin", "e");
EINA_LIST_FOREACH(zoom_objs, l, zoom_obj)
{
edje_object_signal_emit(zoom_obj, "e,state,dragging", "e");
if (e_comp_object_util_zone_get(zoom_obj) == e_zone_current_get(e_comp_util_evas_object_comp_get(zoom_obj)))
edje_object_signal_emit(zoom_obj, "e,state,current", "e");
}
}
evas_object_move(dm_drag,
e_comp_canvas_x_root_adjust(e_comp_get(NULL), ev->root.x) - (dx - x),
@ -190,12 +204,6 @@ _zoomobj_pack_client(const E_Client *ec, const E_Zone *zone, Evas_Object *tb, Ev
e_table_pack_options_set(e, 0, 0, 0, 0, 0.5, 0.5, zmw + w, zmh + h, 9999, 9999);
}
static void
_client_drag_begun(void *data EINA_UNUSED, Evas_Object *obj, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
{
evas_object_hide(obj);
}
static void
_zoomobj_add_client(Evas_Object *zoom_obj, Eina_List *l, Evas_Object *m)
{
@ -214,7 +222,6 @@ _zoomobj_add_client(Evas_Object *zoom_obj, Eina_List *l, Evas_Object *m)
edje_object_size_min_calc(e, &zmw, &zmh);
edje_object_signal_callback_add(e, "e,action,activate", "e", _client_activate, ec);
edje_object_signal_callback_add(e, "e,state,active", "e", _client_active, ec);
edje_object_signal_callback_add(e, "e,drag,begun", "e", _client_drag_begun, ec);
if (e_client_focused_get() == ec)
{
edje_object_signal_emit(e, "e,state,focused", "e");