X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=530c942d2b51ce33bcd375ff080598fb0fbf5862;hb=bef91830c7f283f5b49d08c8c9282e9c2988936e;hp=f7ed89b080f038f40770c073a9e2f8f1db3d5b82;hpb=f8a013da2a1675472ed4eb46c1f5b0cb0acde153;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index f7ed89b..530c942 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -1502,10 +1502,11 @@ int urgent[SWM_WS_MAX]; void bar_urgent(char *s, size_t sz) { - XWMHints *wmh = NULL; struct ws_win *win; int i, j, num_screens; char b[8]; + xcb_get_property_cookie_t c; + xcb_wm_hints_t hints; for (i = 0; i < workspace_limit; i++) urgent[i] = 0; @@ -1514,13 +1515,12 @@ bar_urgent(char *s, size_t sz) for (i = 0; i < num_screens; i++) for (j = 0; j < workspace_limit; j++) TAILQ_FOREACH(win, &screens[i].ws[j].winlist, entry) { - wmh = XGetWMHints(display, win->id); - if (wmh == NULL) + c = xcb_get_wm_hints(conn, win->id); + if (xcb_get_wm_hints_reply(conn, c, + &hints, NULL) == 0) continue; - - if (wmh->flags & XUrgencyHint) + if (hints.flags & XCB_WM_HINT_X_URGENCY) urgent[j] = 1; - XFree(wmh); } for (i = 0; i < workspace_limit; i++) { @@ -2724,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); @@ -2733,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); } } @@ -6285,7 +6287,8 @@ manage_window(xcb_window_t id) const char *errstr; struct pid_e *p; struct quirk *qp; - + uint32_t event_mask; + if ((win = find_window(id)) != NULL) return (win); /* already being managed */ @@ -6504,9 +6507,12 @@ manage_window(xcb_window_t id) update_window(win); } - XSelectInput(display, id, EnterWindowMask | FocusChangeMask | - PropertyChangeMask | StructureNotifyMask); + event_mask = XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_FOCUS_CHANGE | + XCB_EVENT_MASK_PROPERTY_CHANGE | + XCB_EVENT_MASK_STRUCTURE_NOTIFY; + xcb_change_window_attributes(conn, id, XCB_CW_EVENT_MASK, &event_mask); + /* floaters need to be mapped if they are in the current workspace */ if ((win->floating || win->transient) && (ws->idx == r->ws->idx)) map_window_raised(win->id); @@ -7709,9 +7715,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);