forked from enlightenment/enlightenment
fix rememebr resolution adjustment so it works - and make it more intelligent
difiding things into 3x3 zones and achoring in each zone for re-adjust SVN revision: 26438
This commit is contained in:
parent
e41e945e3b
commit
5fe03d3452
|
@ -5329,32 +5329,126 @@ _e_border_eval(E_Border *bd)
|
||||||
if (desk)
|
if (desk)
|
||||||
e_border_desk_set(bd, desk);
|
e_border_desk_set(bd, desk);
|
||||||
}
|
}
|
||||||
|
if (rem->apply & E_REMEMBER_APPLY_SIZE)
|
||||||
|
{
|
||||||
|
bd->client.w = rem->prop.w;
|
||||||
|
bd->client.h = rem->prop.h;
|
||||||
|
/* we can trust internal windows */
|
||||||
|
if (bd->internal)
|
||||||
|
{
|
||||||
|
if (bd->client.icccm.min_w > bd->client.w)
|
||||||
|
bd->client.w = bd->client.icccm.min_w;
|
||||||
|
if (bd->client.icccm.max_w < bd->client.w)
|
||||||
|
bd->client.w = bd->client.icccm.max_w;
|
||||||
|
if (bd->client.icccm.min_h > bd->client.h)
|
||||||
|
bd->client.h = bd->client.icccm.min_h;
|
||||||
|
if (bd->client.icccm.max_h < bd->client.h)
|
||||||
|
bd->client.h = bd->client.icccm.max_h;
|
||||||
|
}
|
||||||
|
bd->w = bd->client.w + bd->client_inset.l + bd->client_inset.r;
|
||||||
|
bd->h = bd->client.h + bd->client_inset.t + bd->client_inset.b;
|
||||||
|
bd->changes.size = 1;
|
||||||
|
bd->changes.shape = 1;
|
||||||
|
}
|
||||||
if ((rem->apply & E_REMEMBER_APPLY_POS) && (!bd->re_manage))
|
if ((rem->apply & E_REMEMBER_APPLY_POS) && (!bd->re_manage))
|
||||||
{
|
{
|
||||||
bd->x = rem->prop.pos_x;
|
bd->x = rem->prop.pos_x;
|
||||||
bd->y = rem->prop.pos_y;
|
bd->y = rem->prop.pos_y;
|
||||||
if (bd->zone->w != rem->prop.res_x)
|
if (bd->zone->w != rem->prop.res_x)
|
||||||
{
|
{
|
||||||
bd->x = (rem->prop.pos_x * rem->prop.res_x) / bd->zone->w;
|
int px;
|
||||||
|
|
||||||
|
px = bd->x + (bd->w / 2);
|
||||||
|
if (px < ((rem->prop.res_x * 1) / 3))
|
||||||
|
{
|
||||||
|
if (bd->zone->w >= (rem->prop.res_x / 3))
|
||||||
|
bd->x = rem->prop.pos_x;
|
||||||
|
else
|
||||||
|
bd->x = ((rem->prop.pos_x - 0) * bd->zone->w) /
|
||||||
|
(rem->prop.res_x / 3);
|
||||||
|
}
|
||||||
|
else if (px < ((rem->prop.res_x * 2) / 3))
|
||||||
|
{
|
||||||
|
if (bd->zone->w >= (rem->prop.res_x / 3))
|
||||||
|
bd->x = (bd->zone->w / 2) +
|
||||||
|
(px - (rem->prop.res_x / 2)) -
|
||||||
|
(bd->w / 2);
|
||||||
|
else
|
||||||
|
bd->x = (bd->zone->w / 2) +
|
||||||
|
(((px - (rem->prop.res_x / 2)) * bd->zone->w) /
|
||||||
|
(rem->prop.res_x / 3)) -
|
||||||
|
(bd->w / 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (bd->zone->w >= (rem->prop.res_x / 3))
|
||||||
|
bd->x = bd->zone->w +
|
||||||
|
rem->prop.pos_x - rem->prop.res_x +
|
||||||
|
(rem->prop.w - bd->client.w);
|
||||||
|
else
|
||||||
|
bd->x = bd->zone->w +
|
||||||
|
(((rem->prop.pos_x - rem->prop.res_x) * bd->zone->w) /
|
||||||
|
(rem->prop.res_x / 3)) +
|
||||||
|
(rem->prop.w - bd->client.w);
|
||||||
|
}
|
||||||
|
if ((rem->prop.pos_x >= 0) && (bd->x < 0))
|
||||||
|
bd->x = 0;
|
||||||
|
else if (((rem->prop.pos_x + rem->prop.w) < rem->prop.res_x) &&
|
||||||
|
((bd->x + bd->w) > bd->zone->w))
|
||||||
|
bd->x = bd->zone->w - bd->w;
|
||||||
}
|
}
|
||||||
if (bd->zone->h != rem->prop.res_y)
|
if (bd->zone->h != rem->prop.res_y)
|
||||||
{
|
{
|
||||||
bd->y = (rem->prop.pos_y * rem->prop.res_y) / bd->zone->h;
|
int py;
|
||||||
|
|
||||||
|
py = bd->y + (bd->h / 2);
|
||||||
|
if (py < ((rem->prop.res_y * 1) / 3))
|
||||||
|
{
|
||||||
|
if (bd->zone->h >= (rem->prop.res_y / 3))
|
||||||
|
bd->y = rem->prop.pos_y;
|
||||||
|
else
|
||||||
|
bd->y = ((rem->prop.pos_y - 0) * bd->zone->h) /
|
||||||
|
(rem->prop.res_y / 3);
|
||||||
|
}
|
||||||
|
else if (py < ((rem->prop.res_y * 2) / 3))
|
||||||
|
{
|
||||||
|
if (bd->zone->h >= (rem->prop.res_y / 3))
|
||||||
|
bd->y = (bd->zone->h / 2) +
|
||||||
|
(py - (rem->prop.res_y / 2)) -
|
||||||
|
(bd->h / 2);
|
||||||
|
else
|
||||||
|
bd->y = (bd->zone->h / 2) +
|
||||||
|
(((py - (rem->prop.res_y / 2)) * bd->zone->h) /
|
||||||
|
(rem->prop.res_y / 3)) -
|
||||||
|
(bd->h / 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (bd->zone->h >= (rem->prop.res_y / 3))
|
||||||
|
bd->y = bd->zone->h +
|
||||||
|
rem->prop.pos_y - rem->prop.res_y +
|
||||||
|
(rem->prop.h - bd->client.h);
|
||||||
|
else
|
||||||
|
bd->y = bd->zone->h +
|
||||||
|
(((rem->prop.pos_y - rem->prop.res_y) * bd->zone->h) /
|
||||||
|
(rem->prop.res_y / 3)) +
|
||||||
|
(rem->prop.h - bd->client.h);
|
||||||
|
}
|
||||||
|
if ((rem->prop.pos_y >= 0) && (bd->y < 0))
|
||||||
|
bd->y = 0;
|
||||||
|
else if (((rem->prop.pos_y + rem->prop.h) < rem->prop.res_y) &&
|
||||||
|
((bd->y + bd->h) > bd->zone->h))
|
||||||
|
bd->y = bd->zone->h - bd->h;
|
||||||
}
|
}
|
||||||
|
// if (bd->zone->w != rem->prop.res_x)
|
||||||
|
// bd->x = (rem->prop.pos_x * bd->zone->w) / rem->prop.res_x;
|
||||||
|
// if (bd->zone->h != rem->prop.res_y)
|
||||||
|
// bd->y = (rem->prop.pos_y * bd->zone->h) / rem->prop.res_y;
|
||||||
bd->x += bd->zone->x;
|
bd->x += bd->zone->x;
|
||||||
bd->y += bd->zone->y;
|
bd->y += bd->zone->y;
|
||||||
bd->placed = 1;
|
bd->placed = 1;
|
||||||
bd->changes.pos = 1;
|
bd->changes.pos = 1;
|
||||||
}
|
}
|
||||||
if (rem->apply & E_REMEMBER_APPLY_SIZE)
|
|
||||||
{
|
|
||||||
bd->w = rem->prop.w + bd->client_inset.l + bd->client_inset.r;
|
|
||||||
bd->h = rem->prop.h + bd->client_inset.t + bd->client_inset.b;
|
|
||||||
bd->client.w = bd->w - (bd->client_inset.l + bd->client_inset.r);
|
|
||||||
bd->client.h = bd->h - (bd->client_inset.t + bd->client_inset.b);
|
|
||||||
bd->changes.size = 1;
|
|
||||||
bd->changes.shape = 1;
|
|
||||||
}
|
|
||||||
if (rem->apply & E_REMEMBER_APPLY_LAYER)
|
if (rem->apply & E_REMEMBER_APPLY_LAYER)
|
||||||
{
|
{
|
||||||
bd->layer = rem->prop.layer;
|
bd->layer = rem->prop.layer;
|
||||||
|
@ -5625,7 +5719,7 @@ _e_border_eval(E_Border *bd)
|
||||||
switch (bd->client.icccm.gravity)
|
switch (bd->client.icccm.gravity)
|
||||||
{
|
{
|
||||||
case ECORE_X_GRAVITY_N:
|
case ECORE_X_GRAVITY_N:
|
||||||
bd->x = (att->x - (bw / 2));
|
bd->x = (att->x - (bw / 2)) - (bd->client_inset.l / 2);
|
||||||
bd->y = att->y;
|
bd->y = att->y;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_GRAVITY_NE:
|
case ECORE_X_GRAVITY_NE:
|
||||||
|
@ -5634,14 +5728,14 @@ _e_border_eval(E_Border *bd)
|
||||||
break;
|
break;
|
||||||
case ECORE_X_GRAVITY_E:
|
case ECORE_X_GRAVITY_E:
|
||||||
bd->x = (att->x - (bw)) - (bd->client_inset.l);
|
bd->x = (att->x - (bw)) - (bd->client_inset.l);
|
||||||
bd->y = (att->y - (bw / 2));
|
bd->y = (att->y - (bw / 2)) - (bd->client_inset.t / 2);
|
||||||
break;
|
break;
|
||||||
case ECORE_X_GRAVITY_SE:
|
case ECORE_X_GRAVITY_SE:
|
||||||
bd->x = (att->x - (bw)) - (bd->client_inset.l);
|
bd->x = (att->x - (bw)) - (bd->client_inset.l);
|
||||||
bd->y = (att->y - (bw)) - (bd->client_inset.t);
|
bd->y = (att->y - (bw)) - (bd->client_inset.t);
|
||||||
break;
|
break;
|
||||||
case ECORE_X_GRAVITY_S:
|
case ECORE_X_GRAVITY_S:
|
||||||
bd->x = (att->x - (bw / 2));
|
bd->x = (att->x - (bw / 2)) - (bd->client_inset.l / 2);
|
||||||
bd->y = (att->y - (bw)) - (bd->client_inset.t);
|
bd->y = (att->y - (bw)) - (bd->client_inset.t);
|
||||||
break;
|
break;
|
||||||
case ECORE_X_GRAVITY_SW:
|
case ECORE_X_GRAVITY_SW:
|
||||||
|
@ -5652,6 +5746,10 @@ _e_border_eval(E_Border *bd)
|
||||||
bd->x = att->x;
|
bd->x = att->x;
|
||||||
bd->y = (att->y - (bw)) - (bd->client_inset.t);
|
bd->y = (att->y - (bw)) - (bd->client_inset.t);
|
||||||
break;
|
break;
|
||||||
|
case ECORE_X_GRAVITY_CENTER:
|
||||||
|
bd->x = (att->x - (bw / 2)) - (bd->client_inset.l / 2);
|
||||||
|
bd->y = (att->y - (bw / 2)) - (bd->client_inset.t / 2);
|
||||||
|
break;
|
||||||
case ECORE_X_GRAVITY_NW:
|
case ECORE_X_GRAVITY_NW:
|
||||||
default:
|
default:
|
||||||
bd->x = att->x;
|
bd->x = att->x;
|
||||||
|
|
Loading…
Reference in New Issue