Merge branch 'more_gravity' of https://github.com/psychon/awesome
This commit is contained in:
commit
75fc93d9c1
51
event.c
51
event.c
|
@ -329,6 +329,14 @@ event_handle_configurerequest(xcb_configure_request_event_t *ev)
|
||||||
|
|
||||||
if((c = client_getbywin(ev->window)))
|
if((c = client_getbywin(ev->window)))
|
||||||
{
|
{
|
||||||
|
lua_State *L = globalconf_get_lua_State();
|
||||||
|
if(ev->value_mask & XCB_CONFIG_WINDOW_BORDER_WIDTH)
|
||||||
|
{
|
||||||
|
luaA_object_push(L, c);
|
||||||
|
window_set_border_width(L, -1, ev->border_width);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
}
|
||||||
|
|
||||||
area_t geometry = c->geometry;
|
area_t geometry = c->geometry;
|
||||||
uint16_t bw = c->border_width;
|
uint16_t bw = c->border_width;
|
||||||
uint16_t tb_left = c->titlebar[CLIENT_TITLEBAR_LEFT].size;
|
uint16_t tb_left = c->titlebar[CLIENT_TITLEBAR_LEFT].size;
|
||||||
|
@ -339,20 +347,8 @@ event_handle_configurerequest(xcb_configure_request_event_t *ev)
|
||||||
uint16_t deco_right = bw + tb_right;
|
uint16_t deco_right = bw + tb_right;
|
||||||
uint16_t deco_top = bw + tb_top;
|
uint16_t deco_top = bw + tb_top;
|
||||||
uint16_t deco_bottom = bw + tb_bottom;
|
uint16_t deco_bottom = bw + tb_bottom;
|
||||||
int16_t diff_w = 0, diff_h = 0, diff_border = 0;
|
int16_t diff_w = 0, diff_h = 0;
|
||||||
|
|
||||||
lua_State *L = globalconf_get_lua_State();
|
|
||||||
|
|
||||||
if(ev->value_mask & XCB_CONFIG_WINDOW_X)
|
|
||||||
{
|
|
||||||
geometry.x = ev->x;
|
|
||||||
xwindow_translate_for_gravity(c->size_hints.win_gravity, deco_left, 0, deco_right, 0, &geometry.x, NULL);
|
|
||||||
}
|
|
||||||
if(ev->value_mask & XCB_CONFIG_WINDOW_Y)
|
|
||||||
{
|
|
||||||
geometry.y = ev->y;
|
|
||||||
xwindow_translate_for_gravity(c->size_hints.win_gravity, 0, deco_top, 0, deco_bottom, NULL, &geometry.y);
|
|
||||||
}
|
|
||||||
if(ev->value_mask & XCB_CONFIG_WINDOW_WIDTH)
|
if(ev->value_mask & XCB_CONFIG_WINDOW_WIDTH)
|
||||||
{
|
{
|
||||||
uint16_t old_w = geometry.width;
|
uint16_t old_w = geometry.width;
|
||||||
|
@ -369,26 +365,23 @@ event_handle_configurerequest(xcb_configure_request_event_t *ev)
|
||||||
geometry.height += tb_top + tb_bottom;
|
geometry.height += tb_top + tb_bottom;
|
||||||
diff_h = geometry.height - old_h;
|
diff_h = geometry.height - old_h;
|
||||||
}
|
}
|
||||||
if(ev->value_mask & XCB_CONFIG_WINDOW_BORDER_WIDTH)
|
|
||||||
{
|
|
||||||
diff_border = ev->border_width - bw;
|
|
||||||
diff_h += diff_border;
|
|
||||||
diff_w += diff_border;
|
|
||||||
|
|
||||||
luaA_object_push(L, c);
|
|
||||||
window_set_border_width(L, -1, ev->border_width);
|
|
||||||
lua_pop(L, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If the client resizes without moving itself, apply window gravity */
|
/* If the client resizes without moving itself, apply window gravity */
|
||||||
if(c->size_hints.flags & XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY)
|
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, 0, 0, diff_w, diff_h, &geometry.x, &geometry.y);
|
||||||
xwindow_translate_for_gravity(c->size_hints.win_gravity, diff_border, diff_border, diff_w, diff_h, &diff_x, &diff_y);
|
}
|
||||||
if(!(ev->value_mask & XCB_CONFIG_WINDOW_X))
|
if(ev->value_mask & XCB_CONFIG_WINDOW_X)
|
||||||
geometry.x += diff_x;
|
{
|
||||||
if(!(ev->value_mask & XCB_CONFIG_WINDOW_Y))
|
geometry.x = ev->x;
|
||||||
geometry.y += diff_y;
|
if(c->size_hints.flags & XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY)
|
||||||
|
xwindow_translate_for_gravity(c->size_hints.win_gravity, deco_left, 0, deco_right, 0, &geometry.x, NULL);
|
||||||
|
}
|
||||||
|
if(ev->value_mask & XCB_CONFIG_WINDOW_Y)
|
||||||
|
{
|
||||||
|
geometry.y = ev->y;
|
||||||
|
if(c->size_hints.flags & XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY)
|
||||||
|
xwindow_translate_for_gravity(c->size_hints.win_gravity, 0, deco_top, 0, deco_bottom, NULL, &geometry.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
c->got_configure_request = true;
|
c->got_configure_request = true;
|
||||||
|
|
Loading…
Reference in New Issue