all repos — openbox @ 4fa86a7073489f436ef1a2bc4dbdccacca461195

openbox fork - make it a bit more like ryudo

don't resist in orthoganal directions when key resizing windows with aspect ratios
Dana Jansens danakj@orodu.net
commit

4fa86a7073489f436ef1a2bc4dbdccacca461195

parent

00bc0e61bc9d81d28f44d22fe4190feef6727ce1

1 files changed, 32 insertions(+), 25 deletions(-)

jump to
M openbox/moveresize.copenbox/moveresize.c

@@ -381,7 +381,9 @@ oh = cur_h;

nw = ow + *dw; nh = oh + *dh; - if (moveresize_client->max_ratio || moveresize_client->min_ratio) { + if (!keyboard && + (moveresize_client->max_ratio || moveresize_client->min_ratio)) + { switch (dir) { case OB_DIRECTION_NORTH: case OB_DIRECTION_SOUTH:

@@ -407,12 +409,13 @@ nh = (gint)(nw / moveresize_client->max_ratio);

} break; } + + /* see its actual size (apply aspect ratios) */ + client_try_configure(moveresize_client, &x, &y, &nw, &nh, &lw, &lh, + TRUE); + trydw = nw - ow; + trydh = nh - oh; } - - /* see its actual size (apply aspect ratios) */ - client_try_configure(moveresize_client, &x, &y, &nw, &nh, &lw, &lh, TRUE); - trydw = nw - ow; - trydh = nh - oh; /* resist_size_* needs the frame size */ nw += moveresize_client->frame->size.left +

@@ -435,26 +438,30 @@ *dw = nw - ow;

*dh = nh - oh; /* take aspect ratios into account for resistance */ - if (*dh != trydh) { /* got resisted */ - /* resize the width based on the height */ - if (moveresize_client->min_ratio) { - if (nh * moveresize_client->min_ratio > nw) - nw = (gint)(nh * moveresize_client->min_ratio); + if (!keyboard && + (moveresize_client->max_ratio || moveresize_client->min_ratio)) + { + if (*dh != trydh) { /* got resisted */ + /* resize the width based on the height */ + if (moveresize_client->min_ratio) { + if (nh * moveresize_client->min_ratio > nw) + nw = (gint)(nh * moveresize_client->min_ratio); + } + if (moveresize_client->max_ratio) { + if (nh * moveresize_client->max_ratio < nw) + nw = (gint)(nh * moveresize_client->max_ratio); + } } - if (moveresize_client->max_ratio) { - if (nh * moveresize_client->max_ratio < nw) - nw = (gint)(nh * moveresize_client->max_ratio); - } - } - if (*dw != trydw) { /* got resisted */ - /* resize the height based on the width */ - if (moveresize_client->min_ratio) { - if (nh * moveresize_client->min_ratio > nw) - nh = (gint)(nw / moveresize_client->min_ratio); - } - if (moveresize_client->max_ratio) { - if (nh * moveresize_client->max_ratio < nw) - nh = (gint)(nw / moveresize_client->max_ratio); + if (*dw != trydw) { /* got resisted */ + /* resize the height based on the width */ + if (moveresize_client->min_ratio) { + if (nh * moveresize_client->min_ratio > nw) + nh = (gint)(nw / moveresize_client->min_ratio); + } + if (moveresize_client->max_ratio) { + if (nh * moveresize_client->max_ratio < nw) + nh = (gint)(nw / moveresize_client->max_ratio); + } } }