1 #include "e_mod_move_shared_types.h"
2 #include "e_mod_move_debug.h"
3 #include "e_mod_move_atoms.h"
4 #include "e_mod_move.h"
6 struct _E_Move_Mini_Apptray_Animation_Data
15 Ecore_Animator *animator;
18 /* local subsystem functions */
19 static Eina_Bool _e_mod_move_mini_apptray_cb_motion_start(void *data, void *event_info);
20 static Eina_Bool _e_mod_move_mini_apptray_cb_motion_move(void *data, void *event_info);
21 static Eina_Bool _e_mod_move_mini_apptray_cb_motion_end(void *data, void *event_info);
22 static Eina_Bool _e_mod_move_mini_apptray_objs_position_set(E_Move_Border *mb, int x, int y);
23 static Eina_Bool _e_mod_move_mini_apptray_objs_position_get(E_Move_Border *mb, int *x, int *y);
24 static Eina_Bool _e_mod_move_mini_apptray_objs_animation_frame(void *data, double pos);
25 static Eina_Bool _e_mod_move_mini_apptray_flick_process(E_Move_Border *mb, int angle, Eina_Bool state);
26 static Eina_Bool _e_mod_move_mini_apptray_dim_objs_apply(E_Move_Border *mb, int x, int y);
27 static Eina_Bool _e_mod_move_mini_apptray_ctl_event_send_policy_check(E_Move_Border *mb, Evas_Point pos);
29 /* local subsystem functions */
31 _e_mod_move_mini_apptray_cb_motion_start(void *data,
34 E_Move_Border *mb = (E_Move_Border *)data;
35 E_Move_Event_Motion_Info *info;
36 E_Move_Control_Object *mco = NULL;
37 Evas_Event_Mouse_Down *mouse_down_event = NULL;
38 Eina_Bool clicked = EINA_FALSE;
42 info = (E_Move_Event_Motion_Info *)event_info;
43 if (!mb || !info) return EINA_FALSE;
45 mouse_down_event = info->event_info;
46 E_CHECK_RETURN(mouse_down_event, EINA_FALSE);
47 if (mouse_down_event->button != 1)
50 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
53 clicked = e_mod_move_event_click_get(mco->event);
59 "[MOVE] ev:%15.15s w:0x%08x %s()\n",
60 "EVAS_OBJ", mb->bd->win, __func__);
62 if (e_mod_move_mini_apptray_objs_animation_state_get(mb)) goto error_cleanup;
64 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
67 angle = e_mod_move_event_angle_get(mco->event);
71 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
74 e_mod_move_event_click_set(mco->event, EINA_TRUE);
77 E_CHECK_GOTO(mb->visible, error_cleanup);
78 if (!REGION_INSIDE_ZONE(mb, mb->bd->zone))
81 E_CHECK_GOTO(e_mod_move_flick_data_new(mb), error_cleanup);
82 e_mod_move_flick_data_init(mb, info->coord.x, info->coord.y);
84 e_mod_move_mini_apptray_objs_add(mb);
86 // send mini_apptray to "move start message".
87 e_mod_move_mini_apptray_anim_state_send(mb, EINA_TRUE);
91 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
94 e_mod_move_event_click_set(mco->event, EINA_FALSE);
100 _e_mod_move_mini_apptray_cb_motion_move(void *data,
103 E_Move_Border *mb = (E_Move_Border *)data;
104 E_Move_Event_Motion_Info *info;
105 E_Move_Control_Object *mco = NULL;
108 Eina_Bool click = EINA_FALSE;
112 Eina_Bool contents_region = EINA_FALSE;
114 info = (E_Move_Event_Motion_Info *)event_info;
115 if (!mb || !info) return EINA_FALSE;
118 "[MOVE] ev:%15.15s w:0x%08x ,angle:%d, (%d,%d) %s()\n",
119 "EVAS_OBJ", mb->bd->win, mb->angle, info->coord.x, info->coord.y,
125 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
128 click = e_mod_move_event_click_get(mco->event);
130 E_CHECK_RETURN(click, EINA_FALSE);
132 if (_e_mod_move_mini_apptray_ctl_event_send_policy_check(mb, info->coord))
134 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
137 e_mod_move_event_propagate_type_set(mco->event, E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
142 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
145 e_mod_move_event_propagate_type_set(mco->event, E_MOVE_EVENT_PROPAGATE_TYPE_NONE);
149 contents_region = e_mod_move_border_contents_rect_get(mb, &cx, &cy ,&cw, &ch);
154 if (info->coord.y > (zone->h - mb->h))
158 if (info->coord.y > cy) y = info->coord.y - cy;
167 if (info->coord.x > (zone->w - mb->w))
171 if (info->coord.x > cx) x = info->coord.x - cx;
180 if (info->coord.y < mb->h)
184 if (info->coord.y < ch) y = info->coord.y - ch;
188 y = info->coord.y - mb->h;
193 if (info->coord.x < mb->w)
197 if (info->coord.x < cw) x = info->coord.x - cw;
201 x = info->coord.x - mb->w;
209 e_mod_move_mini_apptray_objs_move(mb, x, y);
215 _e_mod_move_mini_apptray_cb_motion_end(void *data,
218 E_Move_Border *mb = (E_Move_Border *)data;
219 E_Move_Event_Motion_Info *info;
220 E_Move_Control_Object *mco = NULL;
224 Eina_Bool click = EINA_FALSE;
225 Eina_Bool flick_state = EINA_FALSE;
226 Evas_Event_Mouse_Up *mouse_up_event;
227 int check_w, check_h;
229 info = (E_Move_Event_Motion_Info *)event_info;
230 if (!mb || !info) return EINA_FALSE;
232 mouse_up_event = info->event_info;
233 E_CHECK_RETURN(mouse_up_event, EINA_FALSE);
234 if (mouse_up_event->button != 1)
238 "[MOVE] ev:%15.15s w:0x%08x ,angle:%d, (%d,%d) %s()\n",
239 "EVAS_OBJ", mb->bd->win, mb->angle, info->coord.x, info->coord.y,
245 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
248 click = e_mod_move_event_click_get(mco->event);
250 E_CHECK_GOTO(click, finish);
252 // event send all set
253 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
256 e_mod_move_event_propagate_type_set(mco->event, E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
259 e_mod_move_flick_data_update(mb, info->coord.x, info->coord.y);
260 flick_state = e_mod_move_flick_state_get(mb, EINA_FALSE);
261 if (_e_mod_move_mini_apptray_flick_process(mb, angle, flick_state))
270 if (check_h) check_h /= 2;
271 if (info->coord.y > (zone->h - check_h))
273 e_mod_move_mini_apptray_e_border_move(mb, 0, zone->h);
274 e_mod_move_mini_apptray_objs_animation_move(mb, 0, zone->h);
278 e_mod_move_mini_apptray_objs_animation_move(mb, 0, (zone->h - mb->h));
283 if (check_w) check_w /= 2;
284 if (info->coord.x > (zone->w - check_w))
286 e_mod_move_mini_apptray_e_border_move(mb, zone->w, 0);
287 e_mod_move_mini_apptray_objs_animation_move(mb, zone->w, 0);
291 e_mod_move_mini_apptray_objs_animation_move(mb, zone->w - mb->w, 0);
295 check_h = mb->y + mb->h;
296 if (check_h) check_h /= 2;
297 if (info->coord.y < check_h)
299 e_mod_move_mini_apptray_e_border_move(mb, 0, mb->h * -1);
300 e_mod_move_mini_apptray_objs_animation_move(mb, 0, mb->h * -1);
304 e_mod_move_mini_apptray_objs_animation_move(mb, 0, 0);
309 if (check_w) check_w /= 2;
310 if (info->coord.x < check_w)
312 e_mod_move_mini_apptray_e_border_move(mb, mb->w * -1, 0);
313 e_mod_move_mini_apptray_objs_animation_move(mb, mb->w * -1, 0);
317 e_mod_move_mini_apptray_objs_animation_move(mb, 0, 0);
324 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
327 e_mod_move_event_click_set(mco->event, EINA_FALSE);
331 if (mb->flick_data) e_mod_move_flick_data_free(mb);
336 _e_mod_move_mini_apptray_objs_position_set(E_Move_Border *mb,
340 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
341 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
342 if (!mini_apptray_data)
343 mini_apptray_data = (E_Move_Mini_Apptray_Data *)e_mod_move_mini_apptray_internal_data_add(mb);
344 E_CHECK_RETURN(mini_apptray_data, EINA_FALSE);
346 mini_apptray_data->x = x;
347 mini_apptray_data->y = y;
348 mb->data = mini_apptray_data;
353 _e_mod_move_mini_apptray_objs_position_get(E_Move_Border *mb,
357 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
358 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
359 E_CHECK_RETURN(mini_apptray_data, EINA_FALSE);
361 *x = mini_apptray_data->x;
362 *y = mini_apptray_data->y;
368 _e_mod_move_mini_apptray_objs_animation_frame(void *data,
371 E_Move_Mini_Apptray_Animation_Data *anim_data = NULL;
372 E_Move_Border *mb = NULL;
376 anim_data = (E_Move_Mini_Apptray_Animation_Data *)data;
377 E_CHECK_RETURN(anim_data, EINA_FALSE);
379 mb = e_mod_move_mini_apptray_find();
380 E_CHECK_RETURN(mb, EINA_FALSE);
382 frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_ACCELERATE, 0.0, 0.0);
383 x = anim_data->sx + anim_data->dx * frame;
384 y = anim_data->sy + anim_data->dy * frame;
386 e_mod_move_mini_apptray_objs_move(mb, x, y);
390 if (!(REGION_INSIDE_ZONE(mb, mb->bd->zone)))
392 e_border_focus_set(mb->bd, 0, 0);
393 e_mod_move_mini_apptray_dim_hide(mb);
396 // send mini_apptray to "move end message".
397 e_mod_move_mini_apptray_anim_state_send(mb, EINA_FALSE);
399 e_mod_move_mini_apptray_objs_del(mb);
401 memset(anim_data, 0, sizeof(E_Move_Mini_Apptray_Animation_Data));
403 mb->anim_data = NULL;
409 _e_mod_move_mini_apptray_flick_process(E_Move_Border *mb,
413 E_Move_Control_Object *mco = NULL;
418 E_CHECK_RETURN(mb, EINA_FALSE);
419 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
420 E_CHECK_RETURN(state, EINA_FALSE);
424 /* mini_apptray click unset */
425 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
428 e_mod_move_event_click_set(mco->event, EINA_FALSE);
431 e_mod_move_flick_data_free(mb);
435 case 90: x = zone->w; y = 0; break;
436 case 180: x = 0; y = mb->h * -1; break;
437 case 270: x = mb->w * -1; y = 0; break;
439 default : x = 0; y = zone->h; break;
442 e_mod_move_mini_apptray_e_border_move(mb, x, y);
443 e_mod_move_mini_apptray_objs_animation_move(mb, x, y);
449 _e_mod_move_mini_apptray_dim_objs_apply(E_Move_Border *mb,
458 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
460 E_CHECK_RETURN(mb, EINA_FALSE);
461 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
462 E_CHECK_RETURN(mb->data, EINA_FALSE);
464 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
465 E_CHECK_RETURN(mini_apptray_data->dim_objs, EINA_FALSE);
469 dim_max = mb->m->dim_max_opacity;
476 opacity = dim_max * mx / mb->w;
483 opacity = dim_max * my / mb->h;
490 opacity = dim_max * mx / mb->w;
498 opacity = dim_max * my / mb->h;
504 e_mod_move_bd_move_dim_objs_opacity_set(mini_apptray_data->dim_objs, opacity);
505 mini_apptray_data->opacity = opacity;
510 _e_mod_move_mini_apptray_ctl_event_send_policy_check(E_Move_Border *mb,
513 int x = 0, y = 0, w = 0, h = 0;
514 Eina_Bool ret = EINA_FALSE;
516 E_CHECK_RETURN(mb, EINA_FALSE);
517 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
519 e_mod_move_bd_move_ctl_objs_geometry_get(mb, &x ,&y, &w, &h);
521 if (E_INSIDE(pos.x, pos.y, x, y, w, h)) ret = EINA_TRUE;
526 /* externally accessible functions */
528 e_mod_move_mini_apptray_ctl_obj_event_setup(E_Move_Border *mb,
529 E_Move_Control_Object *mco)
533 E_CHECK(TYPE_MINI_APPTRAY_CHECK(mb));
535 mco->event = e_mod_move_event_new(mb->bd->client.win, mco->obj);
538 e_mod_move_event_data_type_set(mco->event, E_MOVE_EVENT_DATA_TYPE_BORDER);
539 e_mod_move_event_angle_cb_set(mco->event,
540 e_mod_move_util_win_prop_angle_get);
541 e_mod_move_event_cb_set(mco->event, E_MOVE_EVENT_TYPE_MOTION_START,
542 _e_mod_move_mini_apptray_cb_motion_start, mb);
543 e_mod_move_event_cb_set(mco->event, E_MOVE_EVENT_TYPE_MOTION_MOVE,
544 _e_mod_move_mini_apptray_cb_motion_move, mb);
545 e_mod_move_event_cb_set(mco->event, E_MOVE_EVENT_TYPE_MOTION_END,
546 _e_mod_move_mini_apptray_cb_motion_end, mb);
547 e_mod_move_event_propagate_type_set(mco->event,
548 E_MOVE_EVENT_PROPAGATE_TYPE_IMMEDIATELY);
551 EINTERN E_Move_Border *
552 e_mod_move_mini_apptray_find(void)
557 m = e_mod_move_util_get();
558 E_CHECK_RETURN(m, 0);
560 EINA_INLIST_REVERSE_FOREACH(m->borders, mb)
562 if (TYPE_MINI_APPTRAY_CHECK(mb)) return mb;
568 e_mod_move_mini_apptray_click_get(void)
570 E_Move_Border *mb = NULL;
571 Eina_Bool click = EINA_FALSE;
572 E_Move_Control_Object *mco = NULL;
575 mb = e_mod_move_mini_apptray_find();
576 E_CHECK_RETURN(mb, EINA_FALSE);
578 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
581 click = e_mod_move_event_click_get(mco->event);
588 e_mod_move_mini_apptray_event_clear(void)
590 E_Move_Border *mb = NULL;
591 Eina_Bool click = EINA_FALSE;
592 E_Move_Control_Object *mco = NULL;
595 mb = e_mod_move_mini_apptray_find();
596 E_CHECK_RETURN(mb, EINA_FALSE);
598 click = e_mod_move_mini_apptray_click_get();
599 E_CHECK_RETURN(click, EINA_FALSE);
601 EINA_LIST_FOREACH(mb->ctl_objs, l, mco)
604 e_mod_move_event_data_clear(mco->event);
605 e_mod_move_event_click_set(mco->event, EINA_FALSE);
608 if (mb->flick_data) e_mod_move_flick_data_free(mb);
614 e_mod_move_mini_apptray_objs_add(E_Move_Border *mb)
616 Eina_Bool mirror = EINA_TRUE;
617 Evas_Object *ly = NULL;
618 E_CHECK_RETURN(mb, EINA_FALSE);
619 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
621 ly = e_mod_move_util_comp_layer_get(mb->m, "move");
622 E_CHECK_RETURN(ly, EINA_FALSE);
626 // Composite mode set true
627 e_mod_move_util_compositor_composite_mode_set(mb->m, EINA_TRUE);
628 mb->objs = e_mod_move_bd_move_objs_add(mb, mirror);
629 e_mod_move_bd_move_objs_move(mb, mb->x, mb->y);
630 e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
631 e_mod_move_bd_move_objs_show(mb);
633 if (!evas_object_visible_get(ly))
634 evas_object_show(ly);
636 if (mb->objs) e_mod_move_util_rotation_lock(mb->m);
642 e_mod_move_mini_apptray_objs_add_with_pos(E_Move_Border *mb,
646 Eina_Bool mirror = EINA_TRUE;
647 E_CHECK_RETURN(mb, EINA_FALSE);
648 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
652 mb->objs = e_mod_move_bd_move_objs_add(mb, mirror);
653 e_mod_move_bd_move_objs_move(mb, x, y);
654 e_mod_move_bd_move_objs_resize(mb, mb->w, mb->h);
655 e_mod_move_bd_move_objs_show(mb);
656 if (mb->objs) e_mod_move_util_rotation_lock(mb->m);
662 e_mod_move_mini_apptray_objs_del(E_Move_Border *mb)
664 Evas_Object *ly = NULL;
665 E_CHECK_RETURN(mb, EINA_FALSE);
666 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
667 ly = e_mod_move_util_comp_layer_get(mb->m, "move");
668 E_CHECK_RETURN(ly, EINA_FALSE);
669 if (evas_object_visible_get(ly))
670 evas_object_hide(ly);
671 e_mod_move_bd_move_objs_del(mb, mb->objs);
672 e_mod_move_util_rotation_unlock(mb->m);
673 // Composite mode set False
674 e_mod_move_util_compositor_composite_mode_set(mb->m, EINA_FALSE);
680 e_mod_move_mini_apptray_objs_move(E_Move_Border *mb,
684 E_CHECK_RETURN(mb, EINA_FALSE);
685 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
687 e_mod_move_bd_move_objs_move(mb, x, y);
688 _e_mod_move_mini_apptray_objs_position_set(mb, x, y);
689 _e_mod_move_mini_apptray_dim_objs_apply(mb, x, y);
694 e_mod_move_mini_apptray_objs_raise(E_Move_Border *mb)
696 E_CHECK_RETURN(mb, EINA_FALSE);
697 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
698 e_mod_move_bd_move_objs_raise(mb);
703 e_mod_move_mini_apptray_objs_animation_move(E_Move_Border *mb,
707 E_Move_Mini_Apptray_Animation_Data *anim_data = NULL;
708 Ecore_Animator *animator = NULL;
709 int sx, sy; //start x, start y
710 double anim_time = 0.0;
712 E_CHECK_RETURN(mb, EINA_FALSE);
713 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
714 E_CHECK_RETURN(mb->m, EINA_FALSE);
715 anim_time = mb->m->animation_duration;
717 if (e_mod_move_mini_apptray_objs_animation_state_get(mb))
719 e_mod_move_mini_apptray_objs_animation_stop(mb);
720 e_mod_move_mini_apptray_objs_animation_clear(mb);
723 anim_data = E_NEW(E_Move_Mini_Apptray_Animation_Data, 1);
724 E_CHECK_RETURN(anim_data, EINA_FALSE);
726 if (_e_mod_move_mini_apptray_objs_position_get(mb, &sx, &sy))
733 anim_data->sx = mb->x;
734 anim_data->sy = mb->y;
735 _e_mod_move_mini_apptray_objs_position_set(mb,
742 anim_data->dx = anim_data->ex - anim_data->sx;
743 anim_data->dy = anim_data->ey - anim_data->sy;
744 animator = ecore_animator_timeline_add(anim_time,
745 _e_mod_move_mini_apptray_objs_animation_frame,
749 memset(anim_data, 0, sizeof(E_Move_Mini_Apptray_Animation_Data));
754 anim_data->animator = animator;
755 anim_data->animating = EINA_TRUE;
756 mb->anim_data = anim_data;
761 e_mod_move_mini_apptray_objs_animation_state_get(E_Move_Border *mb)
763 E_Move_Mini_Apptray_Animation_Data *anim_data = NULL;
764 E_CHECK_RETURN(mb, EINA_FALSE);
765 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
767 E_CHECK_RETURN(mb->anim_data, EINA_FALSE);
768 anim_data = (E_Move_Mini_Apptray_Animation_Data *)mb->anim_data;
769 E_CHECK_RETURN(anim_data->animating, EINA_FALSE);
774 e_mod_move_mini_apptray_objs_animation_stop(E_Move_Border *mb)
776 E_Move_Mini_Apptray_Animation_Data *anim_data = NULL;
777 E_CHECK_RETURN(mb, EINA_FALSE);
778 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
780 E_CHECK_RETURN(mb->anim_data, EINA_FALSE);
781 anim_data = (E_Move_Mini_Apptray_Animation_Data *)mb->anim_data;
782 ecore_animator_freeze(anim_data->animator);
787 e_mod_move_mini_apptray_objs_animation_clear(E_Move_Border *mb)
789 E_Move_Mini_Apptray_Animation_Data *anim_data = NULL;
790 E_CHECK_RETURN(mb, EINA_FALSE);
791 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
793 E_CHECK_RETURN(mb->anim_data, EINA_FALSE);
794 anim_data = (E_Move_Mini_Apptray_Animation_Data *)mb->anim_data;
795 ecore_animator_del(anim_data->animator);
796 memset(anim_data, 0, sizeof(E_Move_Mini_Apptray_Animation_Data));
798 mb->anim_data = NULL;
804 e_mod_move_mini_apptray_internal_data_add(E_Move_Border *mb)
806 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
808 E_CHECK_RETURN(mb, NULL);
809 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), NULL);
810 E_CHECK_RETURN(mb->m, NULL);
811 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
812 dim_min = mb->m->dim_min_opacity;
813 if (!mini_apptray_data)
815 mini_apptray_data = E_NEW(E_Move_Mini_Apptray_Data, 1);
816 E_CHECK_RETURN(mini_apptray_data, NULL);
817 mini_apptray_data->x = mb->x;
818 mini_apptray_data->y = mb->y;
819 mini_apptray_data->dim_objs = NULL;
820 mini_apptray_data->opacity = dim_min;
821 mb->data = mini_apptray_data;
827 e_mod_move_mini_apptray_internal_data_del(E_Move_Border *mb)
829 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
830 E_CHECK_RETURN(mb, EINA_FALSE);
831 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
832 E_CHECK_RETURN(mb->data, EINA_FALSE);
833 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
834 e_mod_move_mini_apptray_dim_hide(mb);
835 E_FREE(mini_apptray_data);
837 e_mod_move_mini_apptray_widget_apply();// disable/destory mini_apptray_widget related datas
842 e_mod_move_mini_apptray_e_border_move(E_Move_Border *mb,
848 E_CHECK_RETURN(mb, EINA_FALSE);
849 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
850 E_CHECK_RETURN(mb->bd, EINA_FALSE);
854 /* check whether zone contains border */
855 if (E_CONTAINS(zone->x, zone->y,
859 e_border_focus_set(mb->bd, 1, 1);
863 e_border_focus_set(mb->bd, 0, 0);
866 ELBF(ELBT_MOVE, 0, mb->bd->win,
867 "MINI APP_TRAY MOVE w:0x%08x c:0x%08x [%d,%d]",
868 mb->bd->win, mb->bd->client.win, x, y);
869 e_border_move(mb->bd, x, y);
875 e_mod_move_mini_apptray_e_border_raise(E_Move_Border *mb)
877 E_CHECK_RETURN(mb, EINA_FALSE);
878 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
880 e_border_raise(mb->bd);
886 e_mod_move_mini_apptray_e_border_lower(E_Move_Border *mb)
888 E_CHECK_RETURN(mb, EINA_FALSE);
889 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
891 e_border_lower(mb->bd);
897 e_mod_move_mini_apptray_dim_show(E_Move_Border *mb)
900 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
901 E_CHECK_RETURN(mb, NULL);
902 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), NULL);
903 E_CHECK_RETURN(mb->m, NULL);
904 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
905 dim_min = mb->m->dim_min_opacity;
906 if (!mini_apptray_data)
908 mini_apptray_data = E_NEW(E_Move_Mini_Apptray_Data, 1);
909 E_CHECK_RETURN(mini_apptray_data, NULL);
911 mini_apptray_data->x = mb->x;
912 mini_apptray_data->y = mb->y;
913 mini_apptray_data->dim_objs = e_mod_move_bd_move_dim_objs_add(mb);
914 e_mod_move_bd_move_dim_objs_show(mini_apptray_data->dim_objs);
915 mini_apptray_data->opacity = dim_min;
916 mb->data = mini_apptray_data;
920 if (!(mini_apptray_data->dim_objs))
922 mini_apptray_data->dim_objs = e_mod_move_bd_move_dim_objs_add(mb);
924 if (mini_apptray_data->dim_objs)
926 e_mod_move_bd_move_dim_objs_show(mini_apptray_data->dim_objs);
927 mini_apptray_data->opacity = dim_min;
932 "[MOVE] ev:%15.15s w:0x%08x %s()\n",
933 "EVAS_OBJ", mb->bd->win, __func__);
935 return mini_apptray_data->dim_objs;
939 e_mod_move_mini_apptray_dim_hide(E_Move_Border *mb)
942 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
943 E_CHECK_RETURN(mb, EINA_FALSE);
944 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
945 E_CHECK_RETURN(mb->m, EINA_FALSE);
946 E_CHECK_RETURN(mb->data, EINA_FALSE);
947 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
948 dim_min = mb->m->dim_min_opacity;
949 E_CHECK_RETURN(mini_apptray_data->dim_objs, EINA_FALSE);
950 e_mod_move_bd_move_dim_objs_hide(mini_apptray_data->dim_objs);
951 e_mod_move_bd_move_dim_objs_del(mini_apptray_data->dim_objs);
952 mini_apptray_data->dim_objs = NULL;
953 mini_apptray_data->opacity = dim_min;
956 "[MOVE] ev:%15.15s w:0x%08x %s()\n",
957 "EVAS_OBJ", ((mb->bd) ? mb->bd->win : NULL), __func__);
963 e_mod_move_mini_apptray_objs_animation_start_position_set(E_Move_Border *mb,
969 Eina_Bool contents_region = EINA_FALSE;
971 E_CHECK_RETURN(mb, EINA_FALSE);
972 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
974 angle = ((angle % 360) / 90) * 90;
976 contents_region = e_mod_move_border_contents_rect_get(mb, &cx, &cy ,&cw, &ch);
979 // todo flick-up position
983 if (contents_region) { x = zone->x + zone->w - cx; y = 0; }
984 else { x = zone->x + zone->w; y = 0; }
987 if (contents_region) { x = 0; y = mb->h * -1 + (mb->h - ch); }
988 else { x = 0; y = mb->h * -1; }
991 if (contents_region) { x = mb->w * -1 + (mb->w - cw); y = 0; }
992 else { x = mb->w * -1; y = 0; }
996 if (contents_region) { x = 0; y = zone->y + zone->h - cy; }
997 else { x = 0; y = zone->y + zone->h; }
1001 _e_mod_move_mini_apptray_objs_position_set(mb, x, y);
1006 EINTERN E_Move_Event_Cb
1007 e_mod_move_mini_apptray_event_cb_get(E_Move_Event_Type type)
1009 if (type == E_MOVE_EVENT_TYPE_MOTION_START)
1010 return _e_mod_move_mini_apptray_cb_motion_start;
1011 else if (type == E_MOVE_EVENT_TYPE_MOTION_MOVE)
1012 return _e_mod_move_mini_apptray_cb_motion_move;
1013 else if (type == E_MOVE_EVENT_TYPE_MOTION_END)
1014 return _e_mod_move_mini_apptray_cb_motion_end;
1020 e_mod_move_mini_apptray_anim_state_send(E_Move_Border *mb,
1023 long d[5] = {0L, 0L, 0L, 0L, 0L};
1025 E_CHECK_RETURN(mb, EINA_FALSE);
1026 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
1028 win = e_mod_move_util_client_xid_get(mb);
1029 E_CHECK_RETURN(win, 0);
1031 if (state) d[0] = 1L;
1034 ecore_x_client_message32_send
1035 (win, ATOM_MV_MINI_APPTRAY_STATE,
1036 ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
1037 d[0], d[1], d[2], d[3], d[4]);
1043 e_mod_move_mini_apptray_objs_animation_layer_set(E_Move_Border *mb)
1045 E_Move *m = e_mod_move_util_get();
1046 E_Move_Border *find_mb = NULL;
1047 E_Move_Border *state_above_mb = NULL;
1049 Eina_Bool found = EINA_FALSE;
1050 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
1052 E_CHECK_RETURN(m, EINA_FALSE);
1053 E_CHECK_RETURN(mb, EINA_FALSE);
1054 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
1056 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
1057 E_CHECK_RETURN(mini_apptray_data, EINA_FALSE);
1059 mini_apptray_data->animation_layer_info.state_above.layer_set = EINA_FALSE;
1060 mini_apptray_data->animation_layer_info.state_above.win = 0;
1062 EINA_INLIST_REVERSE_FOREACH(m->borders, find_mb)
1065 && (find_mb->bd->layer == e_mod_move_util_layer_policy_get(E_MOVE_STATE_ABOVE_LAYER))
1066 && (find_mb->visible))
1068 win = find_mb->bd->client.win;
1073 && (find_mb->bd->layer < e_mod_move_util_layer_policy_get(E_MOVE_STATE_ABOVE_LAYER)))
1081 mini_apptray_data->animation_layer_info.state_above.layer_set = EINA_TRUE;
1082 mini_apptray_data->animation_layer_info.state_above.win = win;
1083 state_above_mb = e_mod_move_border_client_find(win);
1085 && !(state_above_mb->objs))
1087 state_above_mb->objs = e_mod_move_bd_move_objs_add(state_above_mb, EINA_TRUE);
1088 e_mod_move_bd_move_objs_move(state_above_mb, state_above_mb->x, state_above_mb->y);
1089 e_mod_move_bd_move_objs_resize(state_above_mb, state_above_mb->w, state_above_mb->h);
1090 e_mod_move_bd_move_objs_show(state_above_mb);
1093 // mini_apptray mirror object stack below to state_above object .
1094 e_mod_move_bd_move_objs_stack_below(mb, state_above_mb); // mb : mini_apptray move border
1098 e_mod_move_mini_apptray_objs_raise(mb);
1105 e_mod_move_mini_apptray_objs_animation_layer_unset(E_Move_Border *mb)
1107 E_Move_Border *state_above_mb = NULL;
1108 E_Move_Mini_Apptray_Data *mini_apptray_data = NULL;
1111 E_CHECK_RETURN(mb, EINA_FALSE);
1112 E_CHECK_RETURN(TYPE_MINI_APPTRAY_CHECK(mb), EINA_FALSE);
1114 mini_apptray_data = (E_Move_Mini_Apptray_Data *)mb->data;
1115 E_CHECK_RETURN(mini_apptray_data, EINA_FALSE);
1117 if (mini_apptray_data->animation_layer_info.state_above.layer_set)
1119 win = mini_apptray_data->animation_layer_info.state_above.win;
1120 if ((state_above_mb = e_mod_move_border_client_find(win))
1121 && (!state_above_mb->animate_move))
1123 e_mod_move_bd_move_objs_del(state_above_mb, state_above_mb->objs);
1124 state_above_mb->objs = NULL;
1128 mini_apptray_data->animation_layer_info.state_above.layer_set = EINA_FALSE;
1129 mini_apptray_data->animation_layer_info.state_above.win = 0;