From bf88570a5f8f3ebd14ea080742170e01978f6a45 Mon Sep 17 00:00:00 2001 From: Iain Patterson Date: Mon, 12 Oct 2009 10:24:55 +0100 Subject: [PATCH] Respect size hints when resizing with wheel. Use height and width increment when wheel resizing if size hints are set on a window and meaningful height and width increments are specified. Windows which don't care about their resize increments will have height and width increments set to 1. For these windows - and windows without resize hints at all - use the setting configured with ResizeIncrement. --- src/window.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/window.c b/src/window.c index 57b51b48..5f1e53cf 100644 --- a/src/window.c +++ b/src/window.c @@ -2860,9 +2860,17 @@ static void frameMouseDown(WObjDescriptor *desc, XEvent *event) WWindow *wwin = desc->parent; unsigned int new_width; unsigned int new_height; - unsigned int resize_increment; + unsigned int resize_width_increment = 0; + unsigned int resize_height_increment = 0; - resize_increment = wPreferences.resize_increment; + if (wwin->normal_hints) { + resize_width_increment = wwin->normal_hints->width_inc; + resize_height_increment = wwin->normal_hints->height_inc; + } + if (resize_width_increment <= 1 && resize_height_increment <= 1) { + resize_width_increment = wPreferences.resize_increment; + resize_height_increment = wPreferences.resize_increment; + } event->xbutton.state &= ValidModMask; @@ -2887,14 +2895,14 @@ static void frameMouseDown(WObjDescriptor *desc, XEvent *event) if (event->xbutton.button == Button3) { wMouseResizeWindow(wwin, event); } else if (event->xbutton.button == Button4) { - new_width = wwin->client.width - resize_increment; - new_height = wwin->client.height - resize_increment; - //wWindowConstrainSize(wwin, &new_width,&new_height); + new_width = wwin->client.width - resize_width_increment; + new_height = wwin->client.height - resize_height_increment; + wWindowConstrainSize(wwin, &new_width,&new_height); wWindowConfigure(wwin, wwin->frame_x, wwin->frame_y, new_width, new_height); } else if (event->xbutton.button == Button5) { - new_width = wwin->client.width + resize_increment; - new_height = wwin->client.height + resize_increment; - //wWindowConstrainSize(wwin, &new_width,&new_height); + new_width = wwin->client.width + resize_width_increment; + new_height = wwin->client.height + resize_height_increment; + wWindowConstrainSize(wwin, &new_width,&new_height); wWindowConfigure(wwin, wwin->frame_x, wwin->frame_y, new_width, new_height); } else if (event->xbutton.button == Button1 || event->xbutton.button == Button2) { wMouseMoveWindow(wwin, event); -- 2.11.4.GIT