diff --git a/src/desksanity.c b/src/desksanity.c index ad90665..0f34e6b 100644 --- a/src/desksanity.c +++ b/src/desksanity.c @@ -15,6 +15,7 @@ enum DS_ROTATE_OUT, DS_ROTATE_IN, DS_SLIDE_SPLIT, + DS_QUAD_SPLIT, DS_LAST, } DS_Type; @@ -241,6 +242,41 @@ _ds_show(E_Desk *desk, int dx, int dy) 0.5, _ds_end, NULL); } break; + case DS_QUAD_SPLIT: + { + int i; + Evas_Object *dmh[4] = {NULL}; + Evas_Object *clip[4]; + Evas_Point cxy[4] = {{desk->zone->x, desk->zone->y}, + {desk->zone->x + (desk->zone->w / 2), desk->zone->y}, + {desk->zone->x, desk->zone->y + (desk->zone->h / 2)}, + {desk->zone->x + (desk->zone->w / 2), desk->zone->y + (desk->zone->h / 2)} + }; + Evas_Point exy[4] = {{desk->zone->x - desk->zone->w, desk->zone->y - desk->zone->h}, + {desk->zone->x + (desk->zone->w * 2), desk->zone->y - desk->zone->h}, + {desk->zone->x - desk->zone->w, desk->zone->y + (desk->zone->h / 2)}, + {desk->zone->x + (desk->zone->w * 2), desk->zone->y + (desk->zone->h * 2)} + }; + + E_FREE_FUNC(dm_show, evas_object_del); + dmh[0] = dm_hide; + for (i = 0; i < 4; i++) + { + if (!dmh[i]) + { + dmh[i] = dm_add(desk_hide); + e_comp_object_util_del_list_append(dm_hide, dmh[i]); + } + clip[i] = evas_object_rectangle_add(e_comp_get(desk)->evas); + e_comp_object_util_del_list_append(dm_hide, clip[i]); + evas_object_geometry_set(clip[i], cxy[i].x, cxy[i].y, desk->zone->w / 2, desk->zone->h / 2); + evas_object_clip_set(dmh[i], clip[i]); + evas_object_show(clip[i]); + efx_move(clip[i], EFX_EFFECT_SPEED_ACCELERATE, + &exy[i], 0.8, (i == 3) ? _ds_end : NULL, NULL); + } + } + break; default: break; } }