forked from enlightenment/enlightenment
parent
cd9536f25c
commit
713810d7f0
|
@ -16,6 +16,9 @@ struct _Gadman_Client_Config
|
|||
struct {
|
||||
int x, y, w, h;
|
||||
} pos;
|
||||
struct {
|
||||
int l, r, t, b;
|
||||
} pad;
|
||||
int w, h;
|
||||
int edge;
|
||||
int zone;
|
||||
|
@ -91,6 +94,10 @@ e_gadman_init(void)
|
|||
E_CONFIG_VAL(D, T, pos.y, INT);
|
||||
E_CONFIG_VAL(D, T, pos.w, INT);
|
||||
E_CONFIG_VAL(D, T, pos.h, INT);
|
||||
E_CONFIG_VAL(D, T, pad.l, INT);
|
||||
E_CONFIG_VAL(D, T, pad.r, INT);
|
||||
E_CONFIG_VAL(D, T, pad.t, INT);
|
||||
E_CONFIG_VAL(D, T, pad.b, INT);
|
||||
E_CONFIG_VAL(D, T, w, INT);
|
||||
E_CONFIG_VAL(D, T, h, INT);
|
||||
E_CONFIG_VAL(D, T, edge, INT);
|
||||
|
@ -297,19 +304,27 @@ e_gadman_client_load(E_Gadman_Client *gmc)
|
|||
E_CONFIG_LIMIT(cf->pos.y, 0, 10000);
|
||||
E_CONFIG_LIMIT(cf->pos.w, 1, 10000);
|
||||
E_CONFIG_LIMIT(cf->pos.h, 1, 10000);
|
||||
E_CONFIG_LIMIT(cf->pad.l, 0, 1000);
|
||||
E_CONFIG_LIMIT(cf->pad.r, 0, 1000);
|
||||
E_CONFIG_LIMIT(cf->pad.t, 0, 1000);
|
||||
E_CONFIG_LIMIT(cf->pad.b, 0, 1000);
|
||||
E_CONFIG_LIMIT(cf->w, 0, 10000);
|
||||
E_CONFIG_LIMIT(cf->h, 0, 10000);
|
||||
E_CONFIG_LIMIT(cf->edge, E_GADMAN_EDGE_LEFT, E_GADMAN_EDGE_BOTTOM);
|
||||
if (cf->pos.w != cf->w)
|
||||
gmc->ax = (double)(cf->pos.x - cf->w) / (double)(cf->pos.w - cf->w);
|
||||
gmc->ax = (double)(cf->pos.x) / (double)(cf->pos.w - cf->w);
|
||||
else
|
||||
gmc->ax = 0.0;
|
||||
if (cf->pos.h != cf->h)
|
||||
gmc->ay = (double)(cf->pos.y - cf->h) / (double)(cf->pos.h - cf->h);
|
||||
gmc->ay = (double)(cf->pos.y) / (double)(cf->pos.h - cf->h);
|
||||
else
|
||||
gmc->ay = 0.0;
|
||||
gmc->w = cf->w;
|
||||
gmc->w -= (cf->pad.l + cf->pad.r);
|
||||
gmc->w += (gmc->pad.l + gmc->pad.r);
|
||||
gmc->h = cf->h;
|
||||
gmc->h -= (cf->pad.t + cf->pad.b);
|
||||
gmc->h += (gmc->pad.t + gmc->pad.b);
|
||||
gmc->edge = cf->edge;
|
||||
gmc->use_autow = cf->use_autow;
|
||||
gmc->use_autoh = cf->use_autoh;
|
||||
|
@ -330,11 +345,11 @@ e_gadman_client_load(E_Gadman_Client *gmc)
|
|||
// gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
||||
// gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
||||
if (cf->pos.w != cf->w)
|
||||
gmc->x = gmc->zone->x + ((cf->pos.x * (gmc->zone->w - gmc->w)) / (cf->pos.w - gmc->w));
|
||||
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
||||
else
|
||||
gmc->x = gmc->zone->x;
|
||||
if (cf->pos.h != cf->h)
|
||||
gmc->y = gmc->zone->y + ((cf->pos.y * (gmc->zone->h - gmc->h)) / (cf->pos.h - gmc->h));
|
||||
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
||||
else
|
||||
gmc->y = gmc->zone->y;
|
||||
gmc->config = cf;
|
||||
|
@ -475,6 +490,17 @@ e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa)
|
|||
gmc->maxa = maxa;
|
||||
}
|
||||
|
||||
void
|
||||
e_gadman_client_padding_set(E_Gadman_Client *gmc, int l, int r, int t, int b)
|
||||
{
|
||||
E_OBJECT_CHECK(gmc);
|
||||
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
||||
gmc->pad.l = l;
|
||||
gmc->pad.r = r;
|
||||
gmc->pad.t = t;
|
||||
gmc->pad.b = b;
|
||||
}
|
||||
|
||||
void
|
||||
e_gadman_client_auto_size_set(E_Gadman_Client *gmc, Evas_Coord autow, Evas_Coord autoh)
|
||||
{
|
||||
|
@ -1069,30 +1095,33 @@ _e_gadman_client_aspect_enforce(E_Gadman_Client *gmc, double cx, double cy, int
|
|||
double aspect;
|
||||
int change = 0;
|
||||
|
||||
neww = gmc->w - (gmc->pad.l + gmc->pad.r);
|
||||
newh = gmc->h - (gmc->pad.t + gmc->pad.b);
|
||||
if (gmc->h > 0)
|
||||
aspect = (double)gmc->w / (double) gmc->h;
|
||||
aspect = (double)neww / (double)newh;
|
||||
else
|
||||
aspect = 0.0;
|
||||
neww = gmc->w;
|
||||
newh = gmc->h;
|
||||
|
||||
if (aspect > gmc->maxa)
|
||||
{
|
||||
if (use_horiz)
|
||||
newh = gmc->w / gmc->maxa;
|
||||
newh = neww / gmc->maxa;
|
||||
else
|
||||
neww = gmc->h * gmc->mina;
|
||||
neww = newh * gmc->mina;
|
||||
change = 1;
|
||||
}
|
||||
else if (aspect < gmc->mina)
|
||||
{
|
||||
if (use_horiz)
|
||||
newh = gmc->w / gmc->maxa;
|
||||
newh = neww / gmc->maxa;
|
||||
else
|
||||
neww = gmc->h * gmc->mina;
|
||||
neww = newh * gmc->mina;
|
||||
change = 1;
|
||||
}
|
||||
if (change)
|
||||
{
|
||||
neww += (gmc->pad.l + gmc->pad.r);
|
||||
newh += (gmc->pad.t + gmc->pad.b);
|
||||
gmc->x = gmc->x + ((gmc->w - neww) * cx);
|
||||
gmc->y = gmc->y + ((gmc->h - newh) * cy);
|
||||
gmc->w = neww;
|
||||
|
@ -1963,6 +1992,10 @@ _e_gadman_client_geom_store(E_Gadman_Client *gmc)
|
|||
cf->pos.y = gmc->y - gmc->zone->y;
|
||||
cf->pos.w = gmc->zone->w;
|
||||
cf->pos.h = gmc->zone->h;
|
||||
cf->pad.l = gmc->pad.l;
|
||||
cf->pad.r = gmc->pad.r;
|
||||
cf->pad.t = gmc->pad.t;
|
||||
cf->pad.b = gmc->pad.b;
|
||||
cf->w = gmc->w;
|
||||
cf->h = gmc->h;
|
||||
cf->edge = gmc->edge;
|
||||
|
|
|
@ -83,6 +83,9 @@ struct _E_Gadman_Client
|
|||
Evas_Coord autow, autoh;
|
||||
double ax, ay;
|
||||
double mina, maxa;
|
||||
struct {
|
||||
int l, r, t, b;
|
||||
} pad;
|
||||
void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change);
|
||||
void *data;
|
||||
void *config;
|
||||
|
@ -106,6 +109,7 @@ EAPI void e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Co
|
|||
EAPI void e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh);
|
||||
EAPI void e_gadman_client_align_set(E_Gadman_Client *gmc, double xalign, double yalign);
|
||||
EAPI void e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa);
|
||||
EAPI void e_gadman_client_padding_set(E_Gadman_Client *gmc, int l, int r, int t, int b);
|
||||
EAPI void e_gadman_client_auto_size_set(E_Gadman_Client *gmc, Evas_Coord autow, Evas_Coord autoh);
|
||||
EAPI void e_gadman_client_edge_set(E_Gadman_Client *gmc, E_Gadman_Edge edge);
|
||||
EAPI E_Gadman_Edge e_gadman_client_edge_get(E_Gadman_Client *gmc);
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* which options should be in main menu, and which in face menu?
|
||||
* check if a new desk is in the current zone
|
||||
* check if padding changes on resize
|
||||
* include deskname in padding
|
||||
*/
|
||||
|
||||
/* module private routines */
|
||||
|
@ -505,6 +506,7 @@ _pager_face_new(Pager *pager, E_Zone *zone, Evas *evas)
|
|||
Pager_Face *face;
|
||||
Evas_Object *o;
|
||||
Evas_Coord x, y, w, h;
|
||||
double aspect;
|
||||
|
||||
face = E_NEW(Pager_Face, 1);
|
||||
if (!face) return NULL;
|
||||
|
@ -535,11 +537,6 @@ _pager_face_new(Pager *pager, E_Zone *zone, Evas *evas)
|
|||
face->inset.t = y;
|
||||
face->inset.b = 1000 - (y + h);
|
||||
|
||||
face->desk_inset.l = -1;
|
||||
face->desk_inset.r = -1;
|
||||
face->desk_inset.t = -1;
|
||||
face->desk_inset.b = -1;
|
||||
|
||||
face->drop_handler = e_drop_handler_add(face,
|
||||
_pager_face_cb_enter, _pager_face_cb_move,
|
||||
_pager_face_cb_leave, _pager_face_cb_drop,
|
||||
|
@ -566,9 +563,18 @@ _pager_face_new(Pager *pager, E_Zone *zone, Evas *evas)
|
|||
E_GADMAN_POLICY_VSIZE);
|
||||
e_gadman_client_min_size_set(face->gmc, 8, 8);
|
||||
e_gadman_client_max_size_set(face->gmc, 600, 600);
|
||||
e_gadman_client_auto_size_set(face->gmc, 186, 40);
|
||||
e_gadman_client_auto_size_set(face->gmc,
|
||||
(face->xnum * 40) + (face->inset.l + face->inset.r),
|
||||
(face->ynum * 30) + (face->inset.t + face->inset.b));
|
||||
e_gadman_client_align_set(face->gmc, 0.0, 1.0);
|
||||
e_gadman_client_resize(face->gmc, 186, 40);
|
||||
aspect = (double)(face->xnum * face->zone->w) / (double)(face->ynum * face->zone->h);
|
||||
e_gadman_client_aspect_set(face->gmc, aspect, aspect);
|
||||
e_gadman_client_padding_set(face->gmc,
|
||||
face->inset.l, face->inset.r,
|
||||
face->inset.t, face->inset.b);
|
||||
e_gadman_client_resize(face->gmc,
|
||||
(face->xnum * 40) + (face->inset.l + face->inset.r),
|
||||
(face->ynum * 30) + (face->inset.t + face->inset.b));
|
||||
e_gadman_client_change_func_set(face->gmc, _pager_face_cb_gmc_change, face);
|
||||
e_gadman_client_load(face->gmc);
|
||||
|
||||
|
@ -727,7 +733,6 @@ _pager_desk_new(Pager_Face *face, E_Desk *desk, int xpos, int ypos)
|
|||
Evas_Object *o;
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
Evas_Coord x, y, w, h;
|
||||
|
||||
pd = E_NEW(Pager_Desk, 1);
|
||||
if (!pd) return NULL;
|
||||
|
@ -747,21 +752,6 @@ _pager_desk_new(Pager_Face *face, E_Desk *desk, int xpos, int ypos)
|
|||
e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, 0, 0, -1, -1);
|
||||
evas_object_show(o);
|
||||
|
||||
if ((face->desk_inset.l == -1) &&
|
||||
(face->desk_inset.r == -1) &&
|
||||
(face->desk_inset.t == -1) &&
|
||||
(face->desk_inset.b == -1))
|
||||
{
|
||||
evas_object_resize(pd->desk_object, 1000, 1000);
|
||||
edje_object_calc_force(pd->desk_object);
|
||||
edje_object_part_geometry_get(pd->desk_object, "items", &x, &y, &w, &h);
|
||||
|
||||
face->desk_inset.l = x;
|
||||
face->desk_inset.r = 1000 - (x + w);
|
||||
face->desk_inset.t = y;
|
||||
face->desk_inset.b = 1000 - (y + h);
|
||||
}
|
||||
|
||||
o = evas_object_rectangle_add(face->evas);
|
||||
pd->event_object = o;
|
||||
evas_object_layer_set(o, 2);
|
||||
|
@ -2422,11 +2412,9 @@ _pager_menu_cb_aspect_keep_height(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
|
||||
face = l->data;
|
||||
|
||||
h = ((face->fh - (face->inset.t + face->inset.b)) / face->ynum) -
|
||||
(face->desk_inset.t + face->desk_inset.b);
|
||||
h = ((face->fh - (face->inset.t + face->inset.b)) / face->ynum);
|
||||
|
||||
w = h * face->zone->w / (double)face->zone->h;
|
||||
w += (face->desk_inset.l + face->desk_inset.r);
|
||||
w *= face->xnum;
|
||||
w += (face->inset.l + face->inset.r);
|
||||
|
||||
|
@ -2449,11 +2437,9 @@ _pager_menu_cb_aspect_keep_width(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
|
||||
face = l->data;
|
||||
|
||||
w = ((face->fw - (face->inset.l + face->inset.r)) / face->xnum) -
|
||||
(face->desk_inset.l + face->desk_inset.r);
|
||||
w = ((face->fw - (face->inset.l + face->inset.r)) / face->xnum);
|
||||
|
||||
h = w * face->zone->h / (double)face->zone->w;
|
||||
h += (face->desk_inset.t + face->desk_inset.b);
|
||||
h *= face->ynum;
|
||||
h += (face->inset.t + face->inset.b);
|
||||
|
||||
|
|
|
@ -88,9 +88,6 @@ struct _Pager_Face
|
|||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
} inset;
|
||||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
} desk_inset;
|
||||
|
||||
/* Current nr. of desktops */
|
||||
int xnum, ynum;
|
||||
|
|
Loading…
Reference in New Issue