From 8f988b2bef5af05f0b5cddbc11b05c833158df5a Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 14 Oct 2011 19:42:37 -0400 Subject: [PATCH 1/1] Make ResizeRelative resize in terms of pixels for windows with resize increments (Fix bug 5228) If the resize is less than the window's resize increment then we bump it up to ensure a resize does at least happen. --- openbox/actions/resizerelative.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/openbox/actions/resizerelative.c b/openbox/actions/resizerelative.c index e32aff3..7ac9f06 100644 --- a/openbox/actions/resizerelative.c +++ b/openbox/actions/resizerelative.c @@ -70,24 +70,25 @@ static gboolean run_func(ObActionsData *data, gpointer options) gint left = o->left, right = o->right, top = o->top, bottom = o->bottom; if (o->left_denom) - left = (left * c->area.width / c->size_inc.width) / o->left_denom; + left = left * c->area.width / o->left_denom; if (o->right_denom) - right = (right * c->area.width / c->size_inc.width) / o->right_denom; + right = right * c->area.width / o->right_denom; if (o->top_denom) - top = (top * c->area.height / c->size_inc.height) / o->top_denom; + top = top * c->area.height / o->top_denom; if (o->bottom_denom) - bottom = (bottom * c->area.height / c->size_inc.height) / o->bottom_denom; + bottom = bottom * c->area.height / o->bottom_denom; + // When resizing, if the resize has a non-zero value then make sure it + // is at least as big as the size increment so the window does actually + // resize. x = c->area.x; y = c->area.y; ow = c->area.width; - xoff = -left * c->size_inc.width; - nw = ow + right * c->size_inc.width - + left * c->size_inc.width; + xoff = -MAX(left, (left ? c->size_inc.width : 0)); + nw = ow + MAX(right + left, (right + left ? c->size_inc.width : 0)); oh = c->area.height; - yoff = -top * c->size_inc.height; - nh = oh + bottom * c->size_inc.height - + top * c->size_inc.height; + yoff = -MAX(top, (top ? c->size_inc.height : 0)); + nh = oh + MAX(bottom + top, (bottom + top ? c->size_inc.height : 0)); client_try_configure(c, &x, &y, &nw, &nh, &lw, &lh, TRUE); xoff = xoff == 0 ? 0 : -- 1.9.1