X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fmanage.c;h=5dcb837c1144538f2abf3ad64bc45c85256b9ff0;hb=8f67eba044f31eb6f1726d0575ae2c47709bb628;hp=8c05b607ca504d1083576c85dd6bcf17dbfe9441;hpb=c7ba95e79dfbb2e3a186b76ecb2754f6e9339d8c;p=i3%2Fi3 diff --git a/src/manage.c b/src/manage.c index 8c05b607..5dcb837c 100644 --- a/src/manage.c +++ b/src/manage.c @@ -99,12 +99,14 @@ void manage_window(xcb_property_handlers_t *prophs, xcb_connection_t *conn, /* Reparent the window and add it to our list of managed windows */ reparent_window(conn, window, attr->visual, geom->root, geom->depth, - geom->x, geom->y, geom->width, geom->height); + geom->x, geom->y, geom->width, geom->height, + geom->border_width); /* Generate callback events for every property we watch */ xcb_property_changed(prophs, XCB_PROPERTY_NEW_VALUE, window, WM_CLASS); xcb_property_changed(prophs, XCB_PROPERTY_NEW_VALUE, window, WM_NAME); xcb_property_changed(prophs, XCB_PROPERTY_NEW_VALUE, window, WM_NORMAL_HINTS); + xcb_property_changed(prophs, XCB_PROPERTY_NEW_VALUE, window, WM_HINTS); xcb_property_changed(prophs, XCB_PROPERTY_NEW_VALUE, window, WM_TRANSIENT_FOR); xcb_property_changed(prophs, XCB_PROPERTY_NEW_VALUE, window, atoms[WM_CLIENT_LEADER]); xcb_property_changed(prophs, XCB_PROPERTY_NEW_VALUE, window, atoms[_NET_WM_NAME]); @@ -124,7 +126,8 @@ out: */ void reparent_window(xcb_connection_t *conn, xcb_window_t child, xcb_visualid_t visual, xcb_window_t root, uint8_t depth, - int16_t x, int16_t y, uint16_t width, uint16_t height) { + int16_t x, int16_t y, uint16_t width, uint16_t height, + uint32_t border_width) { xcb_get_property_cookie_t wm_type_cookie, strut_cookie, state_cookie, utf8_title_cookie, title_cookie, @@ -174,6 +177,7 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child, new->rect.height = height; new->width_increment = 1; new->height_increment = 1; + new->border_width = border_width; /* Pre-initialize the values for floating */ new->floating_rect.x = -1; new->floating_rect.width = width; @@ -231,12 +235,8 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child, xcb_grab_button(conn, false, child, XCB_EVENT_MASK_BUTTON_PRESS, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC, root, XCB_NONE, - 1 /* left mouse button */, XCB_MOD_MASK_1); - - xcb_grab_button(conn, false, child, XCB_EVENT_MASK_BUTTON_PRESS, - XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC, root, XCB_NONE, - 3 /* right mouse button */, XCB_MOD_MASK_1); - + 3 /* right mouse button */, + XCB_BUTTON_MASK_ANY /* don’t filter for any modifiers */); /* Get _NET_WM_WINDOW_TYPE (to see if it’s a dock) */ xcb_atom_t *atom; @@ -335,7 +335,7 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child, } LOG("Changing container/workspace and unmapping the client\n"); - Workspace *t_ws = &(workspaces[assign->workspace-1]); + Workspace *t_ws = workspace_get(assign->workspace-1); workspace_initialize(t_ws, c_ws->screen); new->container = t_ws->table[t_ws->current_col][t_ws->current_row];