diff options
author | Michael Cardell Widerkrantz <mc@hack.org> | 2011-06-01 07:26:38 +0200 |
---|---|---|
committer | Michael Cardell Widerkrantz <mc@hack.org> | 2011-06-01 07:26:38 +0200 |
commit | 37f0b7a56973d87bff76fc0e018ac9bbafdb1f1d (patch) | |
tree | 39ceb572010cd3ce4f51ca7244543eece52723f3 | |
parent | 9d7112dc6f9b179ee44e5b47453173160e0f14fd (diff) | |
download | mcwm-37f0b7a56973d87bff76fc0e018ac9bbafdb1f1d.zip |
Always set borders again after unmaxing when we move to new screen.
Count borders in width and height when fitting on screen.
Remove unneccessary getgeom() from topright(). We know the geometry.
-rw-r--r-- | mcwm.c | 44 |
1 files changed, 24 insertions, 20 deletions
@@ -320,6 +320,7 @@ void resizestep(struct client *client, char direction); void mousemove(struct client *client, int rel_x, int rel_y); void mouseresize(struct client *client, int rel_x, int rel_y); void movestep(struct client *client, char direction); +void setborders(struct client *client, int width); void unmax(struct client *client); void maximize(struct client *client); void maxvert(struct client *client); @@ -544,12 +545,7 @@ void arrangewindows(uint16_t rootwidth, uint16_t rootheight) client->maxed = false; /* Set borders again. */ - values[0] = BORDERWIDTH; - - mask |= XCB_CONFIG_WINDOW_BORDER_WIDTH; - - xcb_configure_window(conn, client->id, mask, &values[0]); - xcb_flush(conn); + setborders(client, BORDERWIDTH); } if (changed) @@ -921,8 +917,13 @@ void fitonscreen(struct client *client) bool willresize = false; client->vertmaxed = false; - client->maxed = false; - + + if (client->maxed) + { + client->maxed = false; + setborders(client, BORDERWIDTH); + } + if (NULL == client->monitor) { mon_x = 0; @@ -967,7 +968,7 @@ void fitonscreen(struct client *client) * If the window is larger than our screen, just place it in the * corner and resize. */ - if (client->width > mon_width) + if (client->width + BORDERWIDTH * 2 > mon_width) { client->x = mon_x; client->width = mon_width - BORDERWIDTH * 2;; @@ -980,7 +981,7 @@ void fitonscreen(struct client *client) willmove = true; } - if (client->height > mon_height) + if (client->height + BORDERWIDTH * 2 > mon_height) { client->y = mon_y; client->height = mon_height - BORDERWIDTH * 2; @@ -2414,6 +2415,18 @@ void movestep(struct client *client, char direction) } } +void setborders(struct client *client, int width) +{ + uint32_t values[1]; + uint32_t mask = 0; + + values[0] = width; + + mask |= XCB_CONFIG_WINDOW_BORDER_WIDTH; + xcb_configure_window(conn, client->id, mask, &values[0]); + xcb_flush(conn); +} + void unmax(struct client *client) { uint32_t values[5]; @@ -2695,10 +2708,6 @@ void topleft(void) void topright(void) { - int16_t x; - int16_t y; - uint16_t width; - uint16_t height; int16_t pointx; int16_t pointy; uint16_t mon_y; @@ -2726,13 +2735,8 @@ void topright(void) { return; } - - if (!getgeom(focuswin->id, &x, &y, &width, &height)) - { - return; - } - focuswin->x = mon_width - (width + BORDERWIDTH * 2); + focuswin->x = mon_width - (focuswin->width + BORDERWIDTH * 2); focuswin->y = mon_y; movewindow(focuswin->id, focuswin->x, focuswin->y); |