Apply window gravity for titlebar resizes
Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
e73335d52d
commit
3b97d1c1a7
|
@ -1844,27 +1844,43 @@ titlebar_resize(lua_State *L, int cidx, client_t *c, client_titlebar_t bar, int
|
||||||
* titlebars should keep its current size!) */
|
* titlebars should keep its current size!) */
|
||||||
area_t geometry = c->geometry;
|
area_t geometry = c->geometry;
|
||||||
int change = size - c->titlebar[bar].size;
|
int change = size - c->titlebar[bar].size;
|
||||||
|
int16_t diff_top = 0, diff_bottom = 0, diff_right = 0, diff_left = 0;
|
||||||
switch (bar) {
|
switch (bar) {
|
||||||
case CLIENT_TITLEBAR_TOP:
|
case CLIENT_TITLEBAR_TOP:
|
||||||
geometry.height += change;
|
geometry.height += change;
|
||||||
|
diff_top = change;
|
||||||
property_name = "property::titlebar_top";
|
property_name = "property::titlebar_top";
|
||||||
break;
|
break;
|
||||||
case CLIENT_TITLEBAR_BOTTOM:
|
case CLIENT_TITLEBAR_BOTTOM:
|
||||||
geometry.height += change;
|
geometry.height += change;
|
||||||
|
diff_bottom = change;
|
||||||
property_name = "property::titlebar_bottom";
|
property_name = "property::titlebar_bottom";
|
||||||
break;
|
break;
|
||||||
case CLIENT_TITLEBAR_RIGHT:
|
case CLIENT_TITLEBAR_RIGHT:
|
||||||
geometry.width += change;
|
geometry.width += change;
|
||||||
|
diff_right = change;
|
||||||
property_name = "property::titlebar_right";
|
property_name = "property::titlebar_right";
|
||||||
break;
|
break;
|
||||||
case CLIENT_TITLEBAR_LEFT:
|
case CLIENT_TITLEBAR_LEFT:
|
||||||
geometry.width += change;
|
geometry.width += change;
|
||||||
|
diff_left = change;
|
||||||
property_name = "property::titlebar_left";
|
property_name = "property::titlebar_left";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fatal("Unknown titlebar kind %d\n", (int) bar);
|
fatal("Unknown titlebar kind %d\n", (int) bar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(c->size_hints.flags & XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY)
|
||||||
|
{
|
||||||
|
int16_t diff_x = 0, diff_y = 0;
|
||||||
|
xwindow_translate_for_gravity(c->size_hints.win_gravity,
|
||||||
|
diff_left, diff_top,
|
||||||
|
diff_right, diff_bottom,
|
||||||
|
&diff_x, &diff_y);
|
||||||
|
geometry.x += diff_x;
|
||||||
|
geometry.y += diff_y;
|
||||||
|
}
|
||||||
|
|
||||||
c->titlebar[bar].size = size;
|
c->titlebar[bar].size = size;
|
||||||
client_resize_do(c, geometry, true);
|
client_resize_do(c, geometry, true);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue