diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 70ae582a4..63680403a 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -5,17 +5,17 @@ * number of desktops. */ -static void _e_desk_free(E_Desk *desk); -static void _e_desk_event_desk_show_free(void *data, void *ev); -static void _e_desk_event_desk_before_show_free(void *data, void *ev); -static void _e_desk_event_desk_after_show_free(void *data, void *ev); -static void _e_desk_event_desk_deskshow_free(void *data, void *ev); -static void _e_desk_event_desk_name_change_free(void *data, void *ev); -static void _e_desk_show_begin(E_Desk *desk, int mode, int x, int dy); -static void _e_desk_show_end(E_Desk *desk); +static void _e_desk_free(E_Desk *desk); +static void _e_desk_event_desk_show_free(void *data, void *ev); +static void _e_desk_event_desk_before_show_free(void *data, void *ev); +static void _e_desk_event_desk_after_show_free(void *data, void *ev); +static void _e_desk_event_desk_deskshow_free(void *data, void *ev); +static void _e_desk_event_desk_name_change_free(void *data, void *ev); +static void _e_desk_show_begin(E_Desk *desk, int mode, int x, int dy); +static void _e_desk_show_end(E_Desk *desk); static Eina_Bool _e_desk_show_animator(void *data); -static void _e_desk_hide_begin(E_Desk *desk, int mode, int dx, int dy); -static void _e_desk_hide_end(E_Desk *desk); +static void _e_desk_hide_begin(E_Desk *desk, int mode, int dx, int dy); +static void _e_desk_hide_end(E_Desk *desk); static Eina_Bool _e_desk_hide_animator(void *data); EAPI int E_EVENT_DESK_SHOW = 0; @@ -63,21 +63,21 @@ e_desk_new(E_Zone *zone, int x, int y) /* Get current desktop's name */ EINA_LIST_FOREACH(e_config->desktop_names, l, cfname) { - if ((cfname->container >= 0) && - ((int) zone->container->num != cfname->container)) continue; - if ((cfname->zone >= 0) && - ((int) zone->num != cfname->zone)) continue; - if ((cfname->desk_x != desk->x) || (cfname->desk_y != desk->y)) + if ((cfname->container >= 0) && + ((int)zone->container->num != cfname->container)) continue; + if ((cfname->zone >= 0) && + ((int)zone->num != cfname->zone)) continue; + if ((cfname->desk_x != desk->x) || (cfname->desk_y != desk->y)) continue; - desk->name = eina_stringshare_add(cfname->name); - ok = 1; - break; + desk->name = eina_stringshare_add(cfname->name); + ok = 1; + break; } if (!ok) { - snprintf(name, sizeof(name), _(e_config->desktop_default_name), x, y); - desk->name = eina_stringshare_add(name); + snprintf(name, sizeof(name), _(e_config->desktop_default_name), x, y); + desk->name = eina_stringshare_add(name); } return desk; @@ -96,8 +96,8 @@ e_desk_name_set(E_Desk *desk, const char *name) ev = E_NEW(E_Event_Desk_Name_Change, 1); ev->desk = desk; e_object_ref(E_OBJECT(desk)); - ecore_event_add(E_EVENT_DESK_NAME_CHANGE, ev, - _e_desk_event_desk_name_change_free, NULL); + ecore_event_add(E_EVENT_DESK_NAME_CHANGE, ev, + _e_desk_event_desk_name_change_free, NULL); } EAPI void @@ -125,15 +125,15 @@ e_desk_name_del(int container, int zone, int desk_x, int desk_y) EINA_LIST_FOREACH(e_config->desktop_names, l, cfname) { - if ((cfname->container == container) && (cfname->zone == zone) && - (cfname->desk_x == desk_x) && (cfname->desk_y == desk_y)) - { - e_config->desktop_names = - eina_list_remove_list(e_config->desktop_names, l); - if (cfname->name) eina_stringshare_del(cfname->name); - E_FREE(cfname); - break; - } + if ((cfname->container == container) && (cfname->zone == zone) && + (cfname->desk_x == desk_x) && (cfname->desk_y == desk_y)) + { + e_config->desktop_names = + eina_list_remove_list(e_config->desktop_names, l); + if (cfname->name) eina_stringshare_del(cfname->name); + E_FREE(cfname); + break; + } } } @@ -147,45 +147,45 @@ e_desk_name_update(void) E_Desk *desk; E_Config_Desktop_Name *cfname; int d_x, d_y, ok; - char name[40]; + char name[40]; EINA_LIST_FOREACH(e_manager_list(), m, man) { - EINA_LIST_FOREACH(man->containers, c, con) - { - EINA_LIST_FOREACH(con->zones, z, zone) - { - for (d_x = 0; d_x < zone->desk_x_count; d_x++) - { - for (d_y = 0; d_y < zone->desk_y_count; d_y++) - { - desk = zone->desks[d_x + zone->desk_x_count * d_y]; - ok = 0; + EINA_LIST_FOREACH(man->containers, c, con) + { + EINA_LIST_FOREACH(con->zones, z, zone) + { + for (d_x = 0; d_x < zone->desk_x_count; d_x++) + { + for (d_y = 0; d_y < zone->desk_y_count; d_y++) + { + desk = zone->desks[d_x + zone->desk_x_count * d_y]; + ok = 0; - EINA_LIST_FOREACH(e_config->desktop_names, l, cfname) - { - if ((cfname->container >= 0) && - ((int) con->num != cfname->container)) continue; - if ((cfname->zone >= 0) && - ((int) zone->num != cfname->zone)) continue; - if ((cfname->desk_x != d_x) || - (cfname->desk_y != d_y)) continue; - e_desk_name_set(desk, cfname->name); - ok = 1; - break; - } + EINA_LIST_FOREACH(e_config->desktop_names, l, cfname) + { + if ((cfname->container >= 0) && + ((int)con->num != cfname->container)) continue; + if ((cfname->zone >= 0) && + ((int)zone->num != cfname->zone)) continue; + if ((cfname->desk_x != d_x) || + (cfname->desk_y != d_y)) continue; + e_desk_name_set(desk, cfname->name); + ok = 1; + break; + } - if (!ok) - { - snprintf(name, sizeof(name), - _(e_config->desktop_default_name), - d_x, d_y); - e_desk_name_set(desk, name); - } - } - } - } - } + if (!ok) + { + snprintf(name, sizeof(name), + _(e_config->desktop_default_name), + d_x, d_y); + e_desk_name_set(desk, name); + } + } + } + } + } } } @@ -209,28 +209,28 @@ e_desk_show(E_Desk *desk) eev = E_NEW(E_Event_Desk_Before_Show, 1); eev->desk = e_desk_current_get(desk->zone); e_object_ref(E_OBJECT(eev->desk)); - ecore_event_add(E_EVENT_DESK_BEFORE_SHOW, eev, + ecore_event_add(E_EVENT_DESK_BEFORE_SHOW, eev, _e_desk_event_desk_before_show_free, NULL); ecore_x_window_shadow_tree_flush(); for (x = 0; x < desk->zone->desk_x_count; x++) { - for (y = 0; y < desk->zone->desk_y_count; y++) - { - E_Desk *desk2; + for (y = 0; y < desk->zone->desk_y_count; y++) + { + E_Desk *desk2; - desk2 = e_desk_at_xy_get(desk->zone, x, y); - if (desk2->visible) - { - desk2->visible = 0; - dx = desk->x - desk2->x; - dy = desk->y - desk2->y; - if (e_config->desk_flip_animate_mode > 0) - _e_desk_hide_begin(desk2, e_config->desk_flip_animate_mode, - dx, dy); - break; - } - } + desk2 = e_desk_at_xy_get(desk->zone, x, y); + if (desk2->visible) + { + desk2->visible = 0; + dx = desk->x - desk2->x; + dy = desk->y - desk2->y; + if (e_config->desk_flip_animate_mode > 0) + _e_desk_hide_begin(desk2, e_config->desk_flip_animate_mode, + dx, dy); + break; + } + } } desk->zone->desk_x_current = desk->x; @@ -240,29 +240,29 @@ e_desk_show(E_Desk *desk) msg = alloca(sizeof(Edje_Message_Float_Set) + (4 * sizeof(double))); msg->count = 5; msg->val[0] = e_config->desk_flip_animate_time; - msg->val[1] = (double) desk->x; - msg->val[2] = (double) desk->zone->desk_x_count; - msg->val[3] = (double) desk->y; - msg->val[4] = (double) desk->zone->desk_y_count; + msg->val[1] = (double)desk->x; + msg->val[2] = (double)desk->zone->desk_x_count; + msg->val[3] = (double)desk->y; + msg->val[4] = (double)desk->zone->desk_y_count; edje_object_message_send(desk->zone->bg_object, EDJE_MESSAGE_FLOAT_SET, 0, msg); if (desk->zone->bg_object) was_zone = 1; if (e_config->desk_flip_animate_mode == 0) { - bl = e_container_border_list_first(desk->zone->container); - while ((bd = e_container_border_list_next(bl))) - { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if ((bd->desk == desk) || (bd->sticky)) + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) + { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if ((bd->desk == desk) || (bd->sticky)) e_border_show(bd); - else if (bd->moving) - e_border_desk_set(bd, desk); - else + else if (bd->moving) + e_border_desk_set(bd, desk); + else e_border_hide(bd, 2); - } - } - e_container_border_list_free(bl); + } + } + e_container_border_list_free(bl); } if (e_config->desk_flip_animate_mode > 0) @@ -270,7 +270,7 @@ e_desk_show(E_Desk *desk) else { if (e_config->focus_last_focused_per_desktop) - e_desk_last_focused_focus(desk); + e_desk_last_focused_focus(desk); } if (was_zone) @@ -285,42 +285,42 @@ e_desk_show(E_Desk *desk) EINA_LIST_FOREACH(e_shelf_list(), l, es) { - Eina_List *ll; - E_Config_Shelf *cf_es; - E_Zone *zone; - E_Config_Shelf_Desk *sd; - int show_shelf=0; + Eina_List *ll; + E_Config_Shelf *cf_es; + E_Zone *zone; + E_Config_Shelf_Desk *sd; + int show_shelf = 0; - if (!es) continue; - if (!es->cfg->desk_show_mode) continue; - cf_es = es->cfg; - if (!cf_es) continue; + if (!es) continue; + if (!es->cfg->desk_show_mode) continue; + cf_es = es->cfg; + if (!cf_es) continue; - zone = e_util_zone_current_get(e_manager_current_get()); - if (cf_es->zone != (int) zone->num) continue; + zone = e_util_zone_current_get(e_manager_current_get()); + if (cf_es->zone != (int)zone->num) continue; - EINA_LIST_FOREACH(es->cfg->desk_list, ll, sd) - { - if (!sd) continue; - if ((desk->x == sd->x) && (desk->y == sd->y)) - { - show_shelf = 1; - break; - } - } - if (show_shelf) - e_shelf_show(es); - else - e_shelf_hide(es); + EINA_LIST_FOREACH(es->cfg->desk_list, ll, sd) + { + if (!sd) continue; + if ((desk->x == sd->x) && (desk->y == sd->y)) + { + show_shelf = 1; + break; + } + } + if (show_shelf) + e_shelf_show(es); + else + e_shelf_hide(es); } if (e_config->desk_flip_animate_mode == 0) { - eeev = E_NEW(E_Event_Desk_After_Show, 1); - eeev->desk = e_desk_current_get(desk->zone); - e_object_ref(E_OBJECT(eeev->desk)); - ecore_event_add(E_EVENT_DESK_AFTER_SHOW, eeev, - _e_desk_event_desk_after_show_free, NULL); + eeev = E_NEW(E_Event_Desk_After_Show, 1); + eeev->desk = e_desk_current_get(desk->zone); + e_object_ref(E_OBJECT(eeev->desk)); + ecore_event_add(E_EVENT_DESK_AFTER_SHOW, eeev, + _e_desk_event_desk_after_show_free, NULL); } e_zone_edge_flip_eval(desk->zone); } @@ -339,32 +339,32 @@ e_desk_deskshow(E_Zone *zone) desk = e_desk_current_get(zone); bl = e_container_border_list_first(zone->container); ecore_x_window_shadow_tree_flush(); - while ((bd = e_container_border_list_next(bl))) + while ((bd = e_container_border_list_next(bl))) { - if (bd->desk == desk) - { - if (desk->deskshow_toggle) - { - if (bd->deskshow) e_border_uniconify(bd); - bd->deskshow = 0; - } - else - { - if (bd->iconic) continue; - if (bd->client.netwm.state.skip_taskbar) continue; - if (bd->user_skip_winlist) continue; - e_border_iconify(bd); - bd->deskshow = 1; - } - } + if (bd->desk == desk) + { + if (desk->deskshow_toggle) + { + if (bd->deskshow) e_border_uniconify(bd); + bd->deskshow = 0; + } + else + { + if (bd->iconic) continue; + if (bd->client.netwm.state.skip_taskbar) continue; + if (bd->user_skip_winlist) continue; + e_border_iconify(bd); + bd->deskshow = 1; + } + } } desk->deskshow_toggle = desk->deskshow_toggle ? 0 : 1; e_container_border_list_free(bl); ev = E_NEW(E_Event_Desk_Show, 1); ev->desk = desk; e_object_ref(E_OBJECT(desk)); - ecore_event_add(E_EVENT_DESK_DESKSHOW, ev, - _e_desk_event_desk_deskshow_free, NULL); + ecore_event_add(E_EVENT_DESK_DESKSHOW, ev, + _e_desk_event_desk_deskshow_free, NULL); } EAPI void @@ -372,25 +372,25 @@ e_desk_last_focused_focus(E_Desk *desk) { Eina_List *l = NULL; E_Border *bd; - + EINA_LIST_FOREACH(e_border_focus_stack_get(), l, bd) { - if ((!bd->iconic) && (bd->visible) && - ((bd->desk == desk) || ((bd->zone == desk->zone) && bd->sticky)) && - (bd->client.icccm.accepts_focus || bd->client.icccm.take_focus) && - (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) && - (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_TOOLBAR) && - (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_MENU) && - (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_SPLASH) && - (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DESKTOP)) - { - /* this was the window last focused in this desktop */ + if ((!bd->iconic) && (bd->visible) && + ((bd->desk == desk) || ((bd->zone == desk->zone) && bd->sticky)) && + (bd->client.icccm.accepts_focus || bd->client.icccm.take_focus) && + (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) && + (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_TOOLBAR) && + (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_MENU) && + (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_SPLASH) && + (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DESKTOP)) + { + /* this was the window last focused in this desktop */ if (!bd->lock_focus_out) - { - e_border_focus_set(bd, 1, 1); - break; - } - } + { + e_border_focus_set(bd, 1, 1); + break; + } + } } } @@ -485,9 +485,9 @@ e_desk_next(E_Zone *zone) x++; if (x >= zone->desk_x_count) { - x = 0; - y++; - if (y >= zone->desk_y_count) y = 0; + x = 0; + y++; + if (y >= zone->desk_y_count) y = 0; } e_desk_show(e_desk_at_xy_get(zone, x, y)); @@ -510,9 +510,9 @@ e_desk_prev(E_Zone *zone) x--; if (x < 0) { - x = zone->desk_x_count - 1; - y--; - if (y < 0) y = zone->desk_y_count - 1; + x = zone->desk_x_count - 1; + y--; + if (y < 0) y = zone->desk_y_count - 1; } e_desk_show(e_desk_at_xy_get(zone, x, y)); } @@ -588,68 +588,68 @@ _e_desk_show_begin(E_Desk *desk, int mode, int dx, int dy) if (dx > 0) dx = 1; if (dy < 0) dy = -1; if (dy > 0) dy = 1; - + t = ecore_loop_time_get(); bl = e_container_border_list_first(desk->zone->container); while ((bd = e_container_border_list_next(bl))) { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if (bd->moving) - { - bd->fx.start.t = t; - bd->fx.start.x = 0; - bd->fx.start.y = 0; - e_border_desk_set(bd, desk); - e_border_show(bd); - } - else if ((bd->desk == desk) && (!bd->sticky)) - { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + bd->fx.start.t = t; + bd->fx.start.x = 0; + bd->fx.start.y = 0; + e_border_desk_set(bd, desk); + e_border_show(bd); + } + else if ((bd->desk == desk) && (!bd->sticky)) + { e_border_tmp_input_hidden_push(bd); - bd->fx.start.t = t; - if (mode == 1) - { - bd->fx.start.x = bd->zone->w * (dx * 1.5); - bd->fx.start.y = bd->zone->h * (dy * 1.5); - } - else if (mode == 2) - { - int mx, my, bx, by; - double fx, fy, ang, rad, len, lmax; + bd->fx.start.t = t; + if (mode == 1) + { + bd->fx.start.x = bd->zone->w * (dx * 1.5); + bd->fx.start.y = bd->zone->h * (dy * 1.5); + } + else if (mode == 2) + { + int mx, my, bx, by; + double fx, fy, ang, rad, len, lmax; - mx = bd->zone->x + (bd->zone->w / 2); - my = bd->zone->y + (bd->zone->h / 2); + mx = bd->zone->x + (bd->zone->w / 2); + my = bd->zone->y + (bd->zone->h / 2); - bx = bd->x + (bd->w / 2) - mx; - by = bd->y + (bd->h / 2) - my; - if (bx == 0) bx = 1; - if (by == 0) by = 1; - fx = (double)bx / (double)(bd->zone->w / 2); - fy = (double)by / (double)(bd->zone->h / 2); - ang = atan(fy / fx); - if (fx < 0.0) - ang = M_PI + ang; - len = sqrt((bx * bx) + (by * by)); - lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) + - ((bd->zone->h / 2) * (bd->zone->h / 2))); - rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0; - bx = cos(ang) * (lmax - len + rad); - by = sin(ang) * (lmax - len + rad); - bd->fx.start.x = bx; - bd->fx.start.y = by; - } - if (bd->fx.start.x < 0) - bd->fx.start.x -= bd->zone->x; - else - bd->fx.start.x += bd->zone->container->w - (bd->zone->x + bd->zone->w); - if (bd->fx.start.y < 0) - bd->fx.start.y -= bd->zone->y; - else - bd->fx.start.y += bd->zone->container->h - (bd->zone->y + bd->zone->h); - e_border_fx_offset(bd, bd->fx.start.x, bd->fx.start.y); - e_border_comp_hidden_set(bd, EINA_TRUE); - } - } + bx = bd->x + (bd->w / 2) - mx; + by = bd->y + (bd->h / 2) - my; + if (bx == 0) bx = 1; + if (by == 0) by = 1; + fx = (double)bx / (double)(bd->zone->w / 2); + fy = (double)by / (double)(bd->zone->h / 2); + ang = atan(fy / fx); + if (fx < 0.0) + ang = M_PI + ang; + len = sqrt((bx * bx) + (by * by)); + lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) + + ((bd->zone->h / 2) * (bd->zone->h / 2))); + rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0; + bx = cos(ang) * (lmax - len + rad); + by = sin(ang) * (lmax - len + rad); + bd->fx.start.x = bx; + bd->fx.start.y = by; + } + if (bd->fx.start.x < 0) + bd->fx.start.x -= bd->zone->x; + else + bd->fx.start.x += bd->zone->container->w - (bd->zone->x + bd->zone->w); + if (bd->fx.start.y < 0) + bd->fx.start.y -= bd->zone->y; + else + bd->fx.start.y += bd->zone->container->h - (bd->zone->y + bd->zone->h); + e_border_fx_offset(bd, bd->fx.start.x, bd->fx.start.y); + e_border_comp_hidden_set(bd, EINA_TRUE); + } + } } e_container_border_list_free(bl); if (desk->animator) ecore_animator_del(desk->animator); @@ -667,20 +667,20 @@ _e_desk_show_end(E_Desk *desk) bl = e_container_border_list_first(desk->zone->container); while ((bd = e_container_border_list_next(bl))) { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if (bd->moving) - e_border_fx_offset(bd, 0, 0); - else if ((bd->desk == desk) && (!bd->sticky)) - { - e_border_fx_offset(bd, 0, 0); - e_border_comp_hidden_set(bd, EINA_FALSE); + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + e_border_fx_offset(bd, 0, 0); + else if ((bd->desk == desk) && (!bd->sticky)) + { + e_border_fx_offset(bd, 0, 0); + e_border_comp_hidden_set(bd, EINA_FALSE); - if (!bd->visible) - e_border_show(bd); - } + if (!bd->visible) + e_border_show(bd); + } e_border_tmp_input_hidden_pop(bd); - } + } } if ((e_config->focus_policy == E_FOCUS_MOUSE) || @@ -689,13 +689,13 @@ _e_desk_show_end(E_Desk *desk) if (e_config->focus_last_focused_per_desktop) { if (!e_border_under_pointer_get(desk, NULL)) - e_desk_last_focused_focus(desk); + e_desk_last_focused_focus(desk); } } else { if (e_config->focus_last_focused_per_desktop) - e_desk_last_focused_focus(desk); + e_desk_last_focused_focus(desk); } e_container_border_list_free(bl); @@ -703,8 +703,8 @@ _e_desk_show_end(E_Desk *desk) ev = E_NEW(E_Event_Desk_After_Show, 1); ev->desk = e_desk_current_get(desk->zone); e_object_ref(E_OBJECT(ev->desk)); - ecore_event_add(E_EVENT_DESK_AFTER_SHOW, ev, - _e_desk_event_desk_after_show_free, NULL); + ecore_event_add(E_EVENT_DESK_AFTER_SHOW, ev, + _e_desk_event_desk_after_show_free, NULL); } static Eina_Bool @@ -719,9 +719,9 @@ _e_desk_show_animator(void *data) if (!desk->animating) { - _e_desk_show_end(desk); - desk->animator = NULL; - return ECORE_CALLBACK_CANCEL; + _e_desk_show_end(desk); + desk->animator = NULL; + return ECORE_CALLBACK_CANCEL; } t = ecore_loop_time_get(); @@ -730,25 +730,25 @@ _e_desk_show_animator(void *data) bl = e_container_border_list_first(desk->zone->container); while ((bd = e_container_border_list_next(bl))) { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if (bd->moving) - { - } - else if ((bd->desk == desk) && (!bd->sticky)) - { - if (!bd->visible) - e_border_show(bd); - - dt = (t - bd->fx.start.t) / spd; - if (dt > 1.0) dt = 1.0; - dt = 1.0 - dt; - dt *= dt; /* decelerate - could be a better hack */ - e_border_fx_offset(bd, - ((double)bd->fx.start.x * dt), - ((double)bd->fx.start.y * dt)); - } - } + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + if (!bd->visible) + e_border_show(bd); + + dt = (t - bd->fx.start.t) / spd; + if (dt > 1.0) dt = 1.0; + dt = 1.0 - dt; + dt *= dt; /* decelerate - could be a better hack */ + e_border_fx_offset(bd, + ((double)bd->fx.start.x * dt), + ((double)bd->fx.start.y * dt)); + } + } } e_container_border_list_free(bl); if (dt <= 0.0) @@ -773,60 +773,60 @@ _e_desk_hide_begin(E_Desk *desk, int mode, int dx, int dy) bl = e_container_border_list_first(desk->zone->container); while ((bd = e_container_border_list_next(bl))) { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if (bd->moving) - { - bd->fx.start.t = t; - bd->fx.start.x = 0; - bd->fx.start.y = 0; - } - else if ((bd->desk == desk) && (!bd->sticky)) - { - bd->fx.start.t = t; - if (mode == 1) - { - bd->fx.start.x = bd->zone->w * (-dx * 1.5); - bd->fx.start.y = bd->zone->h * (-dy * 1.5); - } - else if (mode == 2) - { - int mx, my, bx, by; - double fx, fy, ang, rad, len, lmax; + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + bd->fx.start.t = t; + bd->fx.start.x = 0; + bd->fx.start.y = 0; + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + bd->fx.start.t = t; + if (mode == 1) + { + bd->fx.start.x = bd->zone->w * (-dx * 1.5); + bd->fx.start.y = bd->zone->h * (-dy * 1.5); + } + else if (mode == 2) + { + int mx, my, bx, by; + double fx, fy, ang, rad, len, lmax; - mx = bd->zone->x + (bd->zone->w / 2); - my = bd->zone->y + (bd->zone->h / 2); + mx = bd->zone->x + (bd->zone->w / 2); + my = bd->zone->y + (bd->zone->h / 2); - bx = bd->x + (bd->w / 2) - mx; - by = bd->y + (bd->h / 2) - my; - if (bx == 0) bx = 1; - if (by == 0) by = 1; - fx = (double)bx / (double)(bd->zone->w / 2); - fy = (double)by / (double)(bd->zone->h / 2); - ang = atan(fy / fx); - if (fx < 0.0) - ang = M_PI + ang; - len = sqrt((bx * bx) + (by * by)); - lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) + - ((bd->zone->h / 2) * (bd->zone->h / 2))); - rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0; - bx = cos(ang) * (lmax - len + rad); - by = sin(ang) * (lmax - len + rad); - bd->fx.start.x = bx; - bd->fx.start.y = by; - } - if (bd->fx.start.x < 0) - bd->fx.start.x -= bd->zone->x; - else - bd->fx.start.x += bd->zone->container->w - (bd->zone->x + bd->zone->w); - if (bd->fx.start.y < 0) - bd->fx.start.y -= bd->zone->y; - else - bd->fx.start.y += bd->zone->container->h - (bd->zone->y + bd->zone->h); - e_border_fx_offset(bd, 0, 0); - e_border_comp_hidden_set(bd, EINA_TRUE); - } - } + bx = bd->x + (bd->w / 2) - mx; + by = bd->y + (bd->h / 2) - my; + if (bx == 0) bx = 1; + if (by == 0) by = 1; + fx = (double)bx / (double)(bd->zone->w / 2); + fy = (double)by / (double)(bd->zone->h / 2); + ang = atan(fy / fx); + if (fx < 0.0) + ang = M_PI + ang; + len = sqrt((bx * bx) + (by * by)); + lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) + + ((bd->zone->h / 2) * (bd->zone->h / 2))); + rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0; + bx = cos(ang) * (lmax - len + rad); + by = sin(ang) * (lmax - len + rad); + bd->fx.start.x = bx; + bd->fx.start.y = by; + } + if (bd->fx.start.x < 0) + bd->fx.start.x -= bd->zone->x; + else + bd->fx.start.x += bd->zone->container->w - (bd->zone->x + bd->zone->w); + if (bd->fx.start.y < 0) + bd->fx.start.y -= bd->zone->y; + else + bd->fx.start.y += bd->zone->container->h - (bd->zone->y + bd->zone->h); + e_border_fx_offset(bd, 0, 0); + e_border_comp_hidden_set(bd, EINA_TRUE); + } + } } e_container_border_list_free(bl); if (desk->animator) ecore_animator_del(desk->animator); @@ -843,17 +843,17 @@ _e_desk_hide_end(E_Desk *desk) bl = e_container_border_list_first(desk->zone->container); while ((bd = e_container_border_list_next(bl))) { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if (bd->moving) - e_border_fx_offset(bd, 0, 0); - else if ((bd->desk == desk) && (!bd->sticky)) - { - e_border_fx_offset(bd, 0, 0); - e_border_comp_hidden_set(bd, EINA_FALSE); - e_border_hide(bd, 2); - } - } + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + e_border_fx_offset(bd, 0, 0); + else if ((bd->desk == desk) && (!bd->sticky)) + { + e_border_fx_offset(bd, 0, 0); + e_border_comp_hidden_set(bd, EINA_FALSE); + e_border_hide(bd, 2); + } + } } e_container_border_list_free(bl); ecore_x_window_shadow_tree_flush(); @@ -871,32 +871,32 @@ _e_desk_hide_animator(void *data) if (!desk->animating) { - _e_desk_hide_end(desk); - desk->animator = NULL; - return ECORE_CALLBACK_CANCEL; + _e_desk_hide_end(desk); + desk->animator = NULL; + return ECORE_CALLBACK_CANCEL; } - + t = ecore_loop_time_get(); dt = -1.0; spd = e_config->desk_flip_animate_time; bl = e_container_border_list_first(desk->zone->container); while ((bd = e_container_border_list_next(bl))) { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if (bd->moving) - { - } - else if ((bd->desk == desk) && (!bd->sticky)) - { - dt = (t - bd->fx.start.t) / spd; - if (dt > 1.0) dt = 1.0; - dt *= dt; /* decelerate - could be a better hack */ - e_border_fx_offset(bd, - ((double)bd->fx.start.x * dt), - ((double)bd->fx.start.y * dt)); - } - } + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + dt = (t - bd->fx.start.t) / spd; + if (dt > 1.0) dt = 1.0; + dt *= dt; /* decelerate - could be a better hack */ + e_border_fx_offset(bd, + ((double)bd->fx.start.x * dt), + ((double)bd->fx.start.y * dt)); + } + } } e_container_border_list_free(bl); @@ -905,3 +905,4 @@ _e_desk_hide_animator(void *data) return ECORE_CALLBACK_RENEW; } +