forked from enlightenment/enlightenment
1. fix perf dialog - to actually change fps
2. save icon theme config 3. add config for desk flip animation modes etc. etc. 4. desk flip animation!!! 2 main modes. might restructure this a bit tho (separate out on/off from the mode as there may be many more modes later) SVN revision: 25299
This commit is contained in:
parent
3ab8e8f86b
commit
818e75fb00
|
@ -827,7 +827,7 @@ e_border_fx_offset(E_Border *bd, int x, int y)
|
|||
bd->y + bd->fx.y + bd->client_inset.t,
|
||||
bd->client.w,
|
||||
bd->client.h);
|
||||
_e_border_move_update(bd);
|
||||
if (bd->moving) _e_border_move_update(bd);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -2309,8 +2309,9 @@ e_border_idler_before(void)
|
|||
bl = e_container_border_list_last(con);
|
||||
while ((bd = e_container_border_list_prev(bl)))
|
||||
{
|
||||
if ((bd->changes.visible) && (bd->visible) &&
|
||||
(!bd->new_client))
|
||||
if ((bd->changes.visible) && (bd->visible) &&
|
||||
(!bd->new_client) && (!bd->changes.pos) &&
|
||||
(!bd->changes.size))
|
||||
{
|
||||
ecore_evas_show(bd->bg_ecore_evas);
|
||||
ecore_x_window_show(bd->win);
|
||||
|
@ -2343,6 +2344,13 @@ e_border_idler_before(void)
|
|||
bd->changes.visible = 0;
|
||||
}
|
||||
if (bd->changed) _e_border_eval(bd);
|
||||
if ((bd->changes.visible) && (bd->visible) &&
|
||||
(!bd->new_client))
|
||||
{
|
||||
ecore_evas_show(bd->bg_ecore_evas);
|
||||
ecore_x_window_show(bd->win);
|
||||
bd->changes.visible = 0;
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
}
|
||||
|
|
|
@ -125,6 +125,10 @@ struct _E_Border
|
|||
|
||||
struct {
|
||||
int x, y;
|
||||
struct {
|
||||
int x, y;
|
||||
double t;
|
||||
} start;
|
||||
} fx;
|
||||
|
||||
struct {
|
||||
|
|
|
@ -473,6 +473,12 @@ e_config_init(void)
|
|||
E_CONFIG_VAL(D, T, border_raise_on_focus, INT);
|
||||
E_CONFIG_VAL(D, T, desk_flip_wrap, INT);
|
||||
|
||||
E_CONFIG_VAL(D, T, icon_theme, STR);
|
||||
|
||||
E_CONFIG_VAL(D, T, desk_flip_animate_mode, INT);
|
||||
E_CONFIG_VAL(D, T, desk_flip_animate_interpolation, INT);
|
||||
E_CONFIG_VAL(D, T, desk_flip_animate_time, DOUBLE);
|
||||
|
||||
E_CONFIG_VAL(D, T, wallpaper_import_last_dev, STR);
|
||||
E_CONFIG_VAL(D, T, wallpaper_import_last_path, STR);
|
||||
|
||||
|
@ -1216,7 +1222,10 @@ e_config_init(void)
|
|||
e_config->wallpaper_grad_c2_b = 255;
|
||||
IFCFGEND;
|
||||
|
||||
IFCFG(0x0100);
|
||||
IFCFG(0x0101);
|
||||
e_config->desk_flip_animate_mode = 1;
|
||||
e_config->desk_flip_animate_interpolation = 0;
|
||||
e_config->desk_flip_animate_time = 0.2;
|
||||
IFCFGEND;
|
||||
|
||||
#if 0 /* example of new config */
|
||||
|
|
|
@ -50,7 +50,7 @@ typedef Eet_Data_Descriptor E_Config_DD;
|
|||
/* increment this whenever a new set of config values are added but the users
|
||||
* config doesn't need top be wiped - simply new values need to be put in
|
||||
*/
|
||||
#define E_CONFIG_FILE_GENERATION 0x0100
|
||||
#define E_CONFIG_FILE_GENERATION 0x0101
|
||||
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
|
||||
|
||||
#define E_EVAS_ENGINE_DEFAULT 0
|
||||
|
@ -236,6 +236,10 @@ struct _E_Config
|
|||
|
||||
const char *icon_theme; // GUI
|
||||
|
||||
int desk_flip_animate_mode;
|
||||
int desk_flip_animate_interpolation;
|
||||
double desk_flip_animate_time;
|
||||
|
||||
const char *wallpaper_import_last_dev; // INTERNAL
|
||||
const char *wallpaper_import_last_path; // INTERNAL
|
||||
|
||||
|
|
451
src/bin/e_desk.c
451
src/bin/e_desk.c
|
@ -13,6 +13,13 @@ static void _e_border_event_desk_show_free(void *data, void *ev);
|
|||
static void _e_border_event_desk_deskshow_free(void *data, void *ev);
|
||||
static void _e_border_event_desk_name_change_free(void *data, void *ev);
|
||||
|
||||
static void _e_desk_show_begin(E_Desk *desk, int mode, int dx, int dy);
|
||||
static void _e_desk_show_end(E_Desk *desk);
|
||||
static int _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 int _e_desk_hide_animator(void *data);
|
||||
|
||||
EAPI int E_EVENT_DESK_SHOW = 0;
|
||||
EAPI int E_EVENT_DESK_DESKSHOW = 0;
|
||||
EAPI int E_EVENT_DESK_NAME_CHANGE = 0;
|
||||
|
@ -183,173 +190,75 @@ e_desk_name_update(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void _e_desk_show_begin(E_Desk *desk);
|
||||
static void _e_desk_show_end(E_Desk *desk);
|
||||
static int _e_desk_show_animator(void *data);
|
||||
|
||||
static void
|
||||
_e_desk_show_begin(E_Desk *desk)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
|
||||
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_fx_offset(bd, -desk->zone->w, 0);
|
||||
e_border_show(bd);
|
||||
if (bd->want_fullscreen)
|
||||
{
|
||||
e_border_fullscreen(bd, e_config->fullscreen_policy);
|
||||
bd->want_fullscreen = 0;
|
||||
}
|
||||
}
|
||||
else if (bd->moving)
|
||||
e_border_desk_set(bd, desk);
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
ecore_animator_add(_e_desk_show_animator, desk);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_show_end(E_Desk *desk)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
|
||||
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_fx_offset(bd, 0, 0);
|
||||
}
|
||||
else if (bd->moving)
|
||||
{
|
||||
e_border_fx_offset(bd, 0, 0);
|
||||
e_border_desk_set(bd, desk);
|
||||
}
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
}
|
||||
|
||||
static int
|
||||
_e_desk_show_animator(void *data)
|
||||
{
|
||||
E_Desk *desk;
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
int done = 1;
|
||||
|
||||
desk = 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))
|
||||
{
|
||||
e_border_fx_offset(bd, bd->fx.x + 20, 0);
|
||||
if (bd->fx.x < 0)
|
||||
done = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
if (done)
|
||||
{
|
||||
_e_desk_show_end(desk);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_hide_begin(E_Desk *desk)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_hide_end(E_Desk *desk)
|
||||
{
|
||||
}
|
||||
|
||||
static int
|
||||
_e_desk_hide_animator(void *data)
|
||||
{
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_desk_show(E_Desk *desk)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
int was_zone = 0;
|
||||
int x, y;
|
||||
int x, y, dx = 0, dy = 0;
|
||||
E_Event_Desk_Show *ev;
|
||||
|
||||
E_OBJECT_CHECK(desk);
|
||||
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
|
||||
if (desk->visible) return;
|
||||
|
||||
// _e_desk_show_begin(desk);
|
||||
|
||||
for (x = 0; x < desk->zone->desk_x_count; x++)
|
||||
{
|
||||
for (y = 0; y < desk->zone->desk_y_count; y++)
|
||||
{
|
||||
E_Desk *desk2;
|
||||
|
||||
desk2 = e_desk_at_xy_get(desk->zone,x, y);
|
||||
desk2->visible = 0;
|
||||
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;
|
||||
desk->zone->desk_y_current = desk->y;
|
||||
desk->visible = 1;
|
||||
|
||||
bl = e_container_border_list_first(desk->zone->container);
|
||||
if (desk->zone->bg_object) was_zone = 1;
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
if (e_config->desk_flip_animate_mode == 0)
|
||||
{
|
||||
if ((bd->desk->zone == desk->zone) && (!bd->iconic))
|
||||
bl = e_container_border_list_first(desk->zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
{
|
||||
if ((bd->desk == desk) || (bd->sticky))
|
||||
if ((bd->desk->zone == desk->zone) && (!bd->iconic))
|
||||
{
|
||||
e_border_show(bd);
|
||||
if (bd->want_fullscreen)
|
||||
if ((bd->desk == desk) || (bd->sticky))
|
||||
{
|
||||
e_border_fullscreen(bd, e_config->fullscreen_policy);
|
||||
bd->want_fullscreen = 0;
|
||||
e_border_show(bd);
|
||||
if (bd->want_fullscreen)
|
||||
{
|
||||
e_border_fullscreen(bd, e_config->fullscreen_policy);
|
||||
bd->want_fullscreen = 0;
|
||||
}
|
||||
}
|
||||
else if (bd->moving)
|
||||
e_border_desk_set(bd, desk);
|
||||
else
|
||||
{
|
||||
if (bd->fullscreen)
|
||||
bd->want_fullscreen = 1;
|
||||
e_border_hide(bd, 2);
|
||||
}
|
||||
}
|
||||
else if (bd->moving)
|
||||
e_border_desk_set(bd, desk);
|
||||
else
|
||||
{
|
||||
/* We have to remember that this border wants to become
|
||||
* fullscreen when we go back to this desk.
|
||||
*/
|
||||
if (bd->fullscreen)
|
||||
bd->want_fullscreen = 1;
|
||||
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)
|
||||
_e_desk_show_begin(desk, e_config->desk_flip_animate_mode, dx, dy);
|
||||
|
||||
if (e_config->focus_last_focused_per_desktop)
|
||||
e_desk_last_focused_focus(desk);
|
||||
|
||||
|
@ -362,7 +271,6 @@ e_desk_show(E_Desk *desk)
|
|||
ev->desk = desk;
|
||||
e_object_ref(E_OBJECT(desk));
|
||||
ecore_event_add(E_EVENT_DESK_SHOW, ev, _e_border_event_desk_show_free, NULL);
|
||||
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -556,6 +464,7 @@ static void
|
|||
_e_desk_free(E_Desk *desk)
|
||||
{
|
||||
if (desk->name) evas_stringshare_del(desk->name);
|
||||
if (desk->animator) ecore_animator_del(desk->animator);
|
||||
free(desk);
|
||||
}
|
||||
|
||||
|
@ -588,3 +497,277 @@ _e_border_event_desk_name_change_free(void *data, void *event)
|
|||
e_object_unref(E_OBJECT(ev->desk));
|
||||
free(ev);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_show_begin(E_Desk *desk, int mode, int dx, int dy)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
double t;
|
||||
|
||||
t = ecore_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))
|
||||
{
|
||||
bd->fx.start.t = t;
|
||||
if (mode == 1)
|
||||
{
|
||||
bd->fx.start.x = bd->zone->w * dx;
|
||||
bd->fx.start.y = bd->zone->h * dy;
|
||||
}
|
||||
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);
|
||||
|
||||
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;
|
||||
}
|
||||
e_border_fx_offset(bd, bd->fx.start.x, bd->fx.start.y);
|
||||
e_border_show(bd);
|
||||
if (bd->want_fullscreen)
|
||||
{
|
||||
e_border_fullscreen(bd, e_config->fullscreen_policy);
|
||||
bd->want_fullscreen = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
if (desk->animator) ecore_animator_del(desk->animator);
|
||||
desk->animator = ecore_animator_add(_e_desk_show_animator, desk);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_show_end(E_Desk *desk)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
|
||||
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);
|
||||
// e_border_desk_set(bd, desk);
|
||||
}
|
||||
else if ((bd->desk == desk) && (!bd->sticky))
|
||||
{
|
||||
e_border_fx_offset(bd, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
}
|
||||
|
||||
static int
|
||||
_e_desk_show_animator(void *data)
|
||||
{
|
||||
E_Desk *desk;
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
double t, dt, spd;
|
||||
|
||||
desk = data;
|
||||
t = ecore_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 = 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)
|
||||
{
|
||||
_e_desk_show_end(desk);
|
||||
desk->animator = NULL;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_hide_begin(E_Desk *desk, int mode, int dx, int dy)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
double t;
|
||||
|
||||
t = ecore_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;
|
||||
}
|
||||
else if ((bd->desk == desk) && (!bd->sticky))
|
||||
{
|
||||
bd->fx.start.t = t;
|
||||
if (mode == 1)
|
||||
{
|
||||
bd->fx.start.x = bd->zone->w * -dx;
|
||||
bd->fx.start.y = bd->zone->h * -dy;
|
||||
}
|
||||
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);
|
||||
|
||||
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;
|
||||
}
|
||||
e_border_fx_offset(bd, 0, 0);
|
||||
if (bd->want_fullscreen)
|
||||
{
|
||||
e_border_fullscreen(bd, e_config->fullscreen_policy);
|
||||
bd->want_fullscreen = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
if (desk->animator) ecore_animator_del(desk->animator);
|
||||
desk->animator = ecore_animator_add(_e_desk_hide_animator, desk);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_hide_end(E_Desk *desk)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
|
||||
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);
|
||||
if (bd->fullscreen)
|
||||
bd->want_fullscreen = 1;
|
||||
e_border_hide(bd, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
}
|
||||
|
||||
static int
|
||||
_e_desk_hide_animator(void *data)
|
||||
{
|
||||
E_Desk *desk;
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
double t, dt, spd;
|
||||
|
||||
desk = data;
|
||||
t = ecore_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 = 1.0 - dt;
|
||||
dt *= dt; // decelerate - could be a better hack
|
||||
// dt = 1.0 - dt;
|
||||
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) || (dt >= 1.0))
|
||||
{
|
||||
_e_desk_hide_end(desk);
|
||||
desk->animator = NULL;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,8 @@ struct _E_Desk
|
|||
unsigned int deskshow_toggle : 1;
|
||||
|
||||
Evas_Object *bg_object;
|
||||
|
||||
Ecore_Animator *animator;
|
||||
};
|
||||
|
||||
struct _E_Event_Desk_Show
|
||||
|
|
|
@ -18,12 +18,16 @@ struct _E_Config_Dialog_Data
|
|||
int x;
|
||||
int y;
|
||||
int edge_flip_basic;
|
||||
int flip_animate;
|
||||
|
||||
/*- ADVANCED -*/
|
||||
int edge_flip_moving;
|
||||
int edge_flip_dragging;
|
||||
double edge_flip_timeout;
|
||||
int flip_wrap;
|
||||
int flip_mode;
|
||||
int flip_interp;
|
||||
double flip_speed;
|
||||
};
|
||||
|
||||
/* a nice easy setup function that does the dirty work */
|
||||
|
@ -57,10 +61,14 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
|||
cfdata->x = e_config->zone_desks_x_count;
|
||||
cfdata->y = e_config->zone_desks_y_count;
|
||||
cfdata->edge_flip_basic = e_config->edge_flip_moving || e_config->edge_flip_dragging;
|
||||
cfdata->flip_animate = e_config->desk_flip_animate_mode > 0;
|
||||
cfdata->edge_flip_moving = e_config->edge_flip_moving;
|
||||
cfdata->edge_flip_dragging = e_config->edge_flip_dragging;
|
||||
cfdata->edge_flip_timeout = e_config->edge_flip_timeout;
|
||||
cfdata->flip_wrap = e_config->desk_flip_wrap;
|
||||
cfdata->flip_mode = e_config->desk_flip_animate_mode;
|
||||
cfdata->flip_interp = e_config->desk_flip_animate_interpolation;
|
||||
cfdata->flip_speed = e_config->desk_flip_animate_time;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -107,7 +115,13 @@ _basic_apply_data(E_Config_Dialog *cdd, E_Config_Dialog_Data *cfdata)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (cfdata->flip_animate)
|
||||
{
|
||||
e_config->desk_flip_animate_mode = 1;
|
||||
e_config->desk_flip_animate_interpolation = 0;
|
||||
e_config->desk_flip_animate_time = 0.5;
|
||||
}
|
||||
e_config->edge_flip_dragging = cfdata->edge_flip_basic;
|
||||
e_config->edge_flip_moving = cfdata->edge_flip_basic;
|
||||
e_zone_update_flip_all();
|
||||
|
@ -139,6 +153,10 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
}
|
||||
}
|
||||
|
||||
e_config->desk_flip_animate_mode = cfdata->flip_mode;
|
||||
e_config->desk_flip_animate_interpolation = cfdata->flip_interp;
|
||||
e_config->desk_flip_animate_time = cfdata->flip_speed;
|
||||
|
||||
e_config->edge_flip_moving = cfdata->edge_flip_moving;
|
||||
e_config->edge_flip_dragging = cfdata->edge_flip_dragging;
|
||||
e_config->edge_flip_timeout = cfdata->edge_flip_timeout;
|
||||
|
@ -168,9 +186,11 @@ _basic_create_widgets(E_Config_Dialog *cdd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_framelist_object_append(of, ot);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Desktop Mouse Flip"), 0);
|
||||
of = e_widget_framelist_add(evas, _("Desktop Flip"), 0);
|
||||
ob = e_widget_check_add(evas, _("Flip desktops when mouse at screen edge"), &(cfdata->edge_flip_basic));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_check_add(evas, _("Animated flip"), &(cfdata->flip_animate));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
|
@ -182,6 +202,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
{
|
||||
/* generate the core widget layout for an advanced dialog */
|
||||
Evas_Object *o, *ob, *of, *ot;
|
||||
E_Radio_Group *rg;
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
|
||||
|
@ -214,5 +235,20 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Flip Animation"), 0);
|
||||
|
||||
rg = e_widget_radio_group_new(&(cfdata->flip_mode));
|
||||
ob = e_widget_radio_add(evas, _("Off"), 0, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("Pane"), 1, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("Zoom"), 2, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f sec"), 0.0, 5.0, 0.05, 0, &(cfdata->flip_speed), NULL, 200);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
|
|
@ -73,6 +73,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
{
|
||||
if (cfdata->framerate <= 0.0) cfdata->framerate = 1.0;
|
||||
e_config->framerate = cfdata->framerate;
|
||||
edje_frametime_set(1.0 / e_config->framerate);
|
||||
e_config_save_queue();
|
||||
return 1;
|
||||
}
|
||||
|
@ -87,7 +88,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
of = e_widget_framelist_add(evas, _("General Settings"), 0);
|
||||
ob = e_widget_label_add(evas, _("Framerate"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 0.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 5.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
@ -105,6 +106,7 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
e_config->image_cache = (cfdata->image_cache * 1024);
|
||||
e_config->edje_cache = cfdata->edje_cache;
|
||||
e_config->edje_collection_cache = cfdata->edje_collection_cache;
|
||||
edje_frametime_set(1.0 / e_config->framerate);
|
||||
e_config_save_queue();
|
||||
return 1;
|
||||
}
|
||||
|
@ -119,7 +121,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
of = e_widget_framelist_add(evas, _("General Settings"), 0);
|
||||
ob = e_widget_label_add(evas, _("Framerate"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 0.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 5.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
|
|
Loading…
Reference in New Issue