JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
convert bar_urgent to XCB
[spectrwm.git] / spectrwm.c
index f7ed89b..1f88aa2 100644 (file)
@@ -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);
        }
 }
 
@@ -7709,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);