forked from enlightenment/enlightenment
parent
3428e5e07a
commit
2bdd24ea93
669
src/bin/e_desk.c
669
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;
|
||||
|
@ -97,7 +97,7 @@ e_desk_name_set(E_Desk *desk, const char *name)
|
|||
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);
|
||||
_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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -215,22 +215,22 @@ e_desk_show(E_Desk *desk)
|
|||
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);
|
||||
}
|
||||
|
@ -341,22 +341,22 @@ e_desk_deskshow(E_Zone *zone)
|
|||
ecore_x_window_shadow_tree_flush();
|
||||
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);
|
||||
|
@ -364,7 +364,7 @@ e_desk_deskshow(E_Zone *zone)
|
|||
ev->desk = desk;
|
||||
e_object_ref(E_OBJECT(desk));
|
||||
ecore_event_add(E_EVENT_DESK_DESKSHOW, ev,
|
||||
_e_desk_event_desk_deskshow_free, NULL);
|
||||
_e_desk_event_desk_deskshow_free, NULL);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -375,22 +375,22 @@ e_desk_last_focused_focus(E_Desk *desk)
|
|||
|
||||
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));
|
||||
}
|
||||
|
@ -593,63 +593,63 @@ _e_desk_show_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;
|
||||
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);
|
||||
|
@ -704,7 +704,7 @@ _e_desk_show_end(E_Desk *desk)
|
|||
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);
|
||||
_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);
|
||||
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));
|
||||
}
|
||||
}
|
||||
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,9 +871,9 @@ _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();
|
||||
|
@ -882,21 +882,21 @@ _e_desk_hide_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))
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue