wayland xdg positioner - fix to handle resize constraints

this fixes T8295

@fix
This commit is contained in:
Carsten Haitzler 2020-04-07 10:40:12 +01:00
parent 039f96df91
commit ccbbe5a459
2 changed files with 5 additions and 6 deletions

View File

@ -898,13 +898,12 @@ _apply_positioner(E_Client *ec, Positioner *p)
if (_apply_positioner_slide(ec, p, zx, zy, zw, zh)) return;
_apply_positioner_slide(ec, p, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h);
#if 0
//resize_x/y is stupid so we're not going to do it
if (!CONSTRAINED(ec, ec->x, ec->y)) return;
if ((p->constrain & XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_X) &&
(!E_CONTAINS(zx, zy, zw, zh, ec->x, zy, ec->w, 1)))
{
if (ec->x < zx) ec->x = zx;
ec->w = zx + zw - ec->x;
e_client_resize_limit(ec, &ec->w, &ec->h);
ec->changes.size = 1;
@ -913,11 +912,11 @@ _apply_positioner(E_Client *ec, Positioner *p)
if ((p->constrain & XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_Y) &&
(!E_CONTAINS(zx, zy, zw, zh, zx, ec->y, 1, ec->h)))
{
if (ec->y < zy) ec->y = zy;
ec->h = zy + zh - ec->y;
e_client_resize_limit(ec, &ec->w, &ec->h);
ec->changes.size = 1;
}
#endif
}
static void

View File

@ -811,6 +811,7 @@ _apply_positioner(E_Client *ec, Positioner *p)
{
int x, y;
int zx, zy, zw, zh;
/* apply base geometry:
* coords are relative to parent
*/
@ -863,13 +864,12 @@ _apply_positioner(E_Client *ec, Positioner *p)
if (_apply_positioner_slide(ec, p, zx, zy, zw, zh)) return;
_apply_positioner_slide(ec, p, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h);
#if 0
//resize_x/y is stupid so we're not going to do it
if (!CONSTRAINED(ec, ec->x, ec->y)) return;
if ((p->constrain & ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_RESIZE_X) &&
(!E_CONTAINS(zx, zy, zw, zh, ec->x, zy, ec->w, 1)))
{
if (ec->x < zx) ec->x = zx;
ec->w = zx + zw - ec->x;
e_client_resize_limit(ec, &ec->w, &ec->h);
ec->changes.size = 1;
@ -878,11 +878,11 @@ _apply_positioner(E_Client *ec, Positioner *p)
if ((p->constrain & ZXDG_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_RESIZE_Y) &&
(!E_CONTAINS(zx, zy, zw, zh, zx, ec->y, 1, ec->h)))
{
if (ec->y < zy) ec->y = zy;
ec->h = zy + zh - ec->y;
e_client_resize_limit(ec, &ec->w, &ec->h);
ec->changes.size = 1;
}
#endif
}
static void