X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=d63e6e8accdd43e107241600dd4c1d12ff1eb80c;hb=b3f747ce9668befedc5399fb8f4623e66d6163e2;hp=da56a79444d808ec1d4c47192f8521d43952c516;hpb=305d315fd5e68f50b9e24f3a170e6a17b611357b;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index da56a79..d63e6e8 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -486,7 +486,7 @@ struct swm_screen { /* colors */ struct { - unsigned long color; + uint32_t color; char *name; } c[SWM_S_COLOR_MAX]; @@ -2162,8 +2162,8 @@ unmap_window(struct ws_win *win) set_win_state(win, XCB_WM_STATE_ICONIC); xcb_unmap_window(conn, win->id); - XSetWindowBorder(display, win->id, - win->s->c[SWM_S_COLOR_UNFOCUS].color); + xcb_change_window_attributes(conn, win->id, + XCB_CW_BORDER_PIXEL, &win->s->c[SWM_S_COLOR_UNFOCUS].color); } void @@ -2479,9 +2479,8 @@ unfocus_win(struct ws_win *win) ; grabbuttons(win, 0); - XSetWindowBorder(display, win->id, - win->ws->r->s->c[SWM_S_COLOR_UNFOCUS].color); - + xcb_change_window_attributes(conn, win->id, XCB_CW_BORDER_PIXEL, + &win->ws->r->s->c[SWM_S_COLOR_UNFOCUS].color); xcb_change_property(conn, XCB_PROP_MODE_REPLACE, win->s->root, ewmh[_NET_ACTIVE_WINDOW].atom, XCB_ATOM_WINDOW, 32, 1, &none); @@ -2543,8 +2542,9 @@ focus_win(struct ws_win *win) /* use larger hammer since the window was killed somehow */ TAILQ_FOREACH(cfw, &win->ws->winlist, entry) if (cfw->ws && cfw->ws->r && cfw->ws->r->s) - XSetWindowBorder(display, cfw->id, - cfw->ws->r->s->c[SWM_S_COLOR_UNFOCUS].color); + xcb_change_window_attributes(conn, cfw->id, + XCB_CW_BORDER_PIXEL, + &cfw->ws->r->s->c[SWM_S_COLOR_UNFOCUS].color); } win->ws->focus = win; @@ -2558,8 +2558,9 @@ focus_win(struct ws_win *win) xcb_set_input_focus(conn, XCB_INPUT_FOCUS_PARENT, win->id, XCB_CURRENT_TIME); grabbuttons(win, 1); - XSetWindowBorder(display, win->id, - win->ws->r->s->c[SWM_S_COLOR_FOCUS].color); + xcb_change_window_attributes(conn, win->id, + XCB_CW_BORDER_PIXEL, + &win->ws->r->s->c[SWM_S_COLOR_FOCUS].color); if (win->ws->cur_layout->flags & SWM_L_MAPONFOCUS || win->ws->always_raise) map_window_raised(win->id); @@ -2723,7 +2724,8 @@ cyclescr(struct swm_region *r, union arg *args) /* move mouse to region */ x = X(rr) + 1; y = Y(rr) + 1 + (bar_enabled ? bar_height : 0); - XWarpPointer(display, None, rr->s[i].root, 0, 0, 0, 0, x, y); + xcb_warp_pointer(conn, XCB_WINDOW_NONE, rr->s[i].root, 0, 0, 0, 0, + x, y); a.id = SWM_ARG_ID_FOCUSCUR; focus(rr, &a); @@ -2732,7 +2734,8 @@ cyclescr(struct swm_region *r, union arg *args) /* move to focus window */ x = X(rr->ws->focus) + 1; y = Y(rr->ws->focus) + 1; - XWarpPointer(display, None, rr->s[i].root, 0, 0, 0, 0, x, y); + xcb_warp_pointer(conn, XCB_WINDOW_NONE, rr->s[i].root, 0, 0, 0, + 0, x, y); } } @@ -6543,6 +6546,7 @@ void unmanage_window(struct ws_win *win) { struct ws_win *parent; + xcb_screen_t *screen; if (win == NULL) return; @@ -6556,8 +6560,10 @@ unmanage_window(struct ws_win *win) } /* focus on root just in case */ - XSetInputFocus(display, PointerRoot, PointerRoot, CurrentTime); - + screen = xcb_setup_roots_iterator(xcb_get_setup(conn)).data; + xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, + screen->root, XCB_CURRENT_TIME); + focus_prev(win); if (win->hints) { @@ -7705,9 +7711,9 @@ noconfig: } /* move pointer to first screen if multi screen */ if (num_screens > 1 || outputs > 1) - XWarpPointer(display, None, rr->s[0].root, - 0, 0, 0, 0, X(rr), - Y(rr) + (bar_enabled ? bar_height : 0)); + xcb_warp_pointer(conn, XCB_WINDOW_NONE, + rr->s[0].root, 0, 0, 0, 0, X(rr), + Y(rr) + (bar_enabled ? bar_height : 0)); a.id = SWM_ARG_ID_FOCUSCUR; focus(rr, &a);