X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=259f24651e73d143f6627f1e844385ce92251ab9;hb=7fa017b181fcbbae699cd51e61149bc31ea04b03;hp=657ed65e0f97ab111f70bb939cf6d4f2116a0e0f;hpb=43e3e1fb354ab7444ff62a5d4daac65febfcbb1e;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index 657ed65..259f246 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -123,17 +123,32 @@ static const char *buildstr = SPECTRWM_VERSION; #endif #if defined(__OpenBSD__) -#define xcb_icccm_wm_hints_t xcb_wm_hints_t -#define xcb_icccm_get_wm_hints xcb_get_wm_hints -#define xcb_icccm_get_wm_hints_reply xcb_get_wm_hints_reply +#define XCB_ICCCM_SIZE_HINT_P_MIN_SIZE XCB_SIZE_HINT_P_MIN_SIZE +#define XCB_ICCCM_SIZE_HINT_P_MAX_SIZE XCB_SIZE_HINT_P_MAX_SIZE +#define XCB_ICCCM_SIZE_HINT_P_RESIZE_INC XCB_SIZE_HINT_P_RESIZE_INC #define XCB_ICCCM_WM_HINT_X_URGENCY XCB_WM_HINT_X_URGENCY #define XCB_ICCCM_WM_STATE_ICONIC XCB_WM_STATE_ICONIC #define XCB_ICCCM_WM_STATE_WITHDRAWN XCB_WM_STATE_WITHDRAWN #define XCB_ICCCM_WM_STATE_NORMAL XCB_WM_STATE_NORMAL +#define xcb_icccm_get_text_property_reply_t xcb_get_text_property_reply_t +#define xcb_icccm_get_text_property_reply_wipe xcb_get_text_property_reply_wipe +#define xcb_icccm_get_wm_class xcb_get_wm_class +#define xcb_icccm_get_wm_class_reply xcb_get_wm_class_reply +#define xcb_icccm_get_wm_class_reply_t xcb_get_wm_class_reply_t +#define xcb_icccm_get_wm_class_reply_wipe xcb_get_wm_class_reply_wipe +#define xcb_icccm_get_wm_hints xcb_get_wm_hints +#define xcb_icccm_get_wm_hints_reply xcb_get_wm_hints_reply #define xcb_icccm_get_wm_name xcb_get_wm_name #define xcb_icccm_get_wm_name_reply xcb_get_wm_name_reply +#define xcb_icccm_get_wm_normal_hints xcb_get_wm_normal_hints +#define xcb_icccm_get_wm_normal_hints_reply xcb_get_wm_normal_hints_reply +#define xcb_icccm_get_wm_protocols xcb_get_wm_protocols +#define xcb_icccm_get_wm_protocols_reply xcb_get_wm_protocols_reply +#define xcb_icccm_get_wm_protocols_reply_t xcb_get_wm_protocols_reply_t +#define xcb_icccm_get_wm_protocols_reply_wipe xcb_get_wm_protocols_reply_wipe #define xcb_icccm_get_wm_transient_for xcb_get_wm_transient_for #define xcb_icccm_get_wm_transient_for_reply xcb_get_wm_transient_for_reply +#define xcb_icccm_wm_hints_t xcb_wm_hints_t #endif /*#define SWM_DEBUG*/ @@ -194,13 +209,13 @@ u_int32_t swm_debug = 0 #define BORDER(w) (w->bordered ? border_width : 0) #define MAX_X(r) ((r)->g.x + (r)->g.w) #define MAX_Y(r) ((r)->g.y + (r)->g.h) -#define SH_MIN(w) (w)->sh.flags & XCB_SIZE_HINT_P_MIN_SIZE +#define SH_MIN(w) (w)->sh.flags & XCB_ICCCM_SIZE_HINT_P_MIN_SIZE #define SH_MIN_W(w) (w)->sh.min_width #define SH_MIN_H(w) (w)->sh.min_height -#define SH_MAX(w) (w)->sh.flags & XCB_SIZE_HINT_P_MAX_SIZE +#define SH_MAX(w) (w)->sh.flags & XCB_ICCCM_SIZE_HINT_P_MAX_SIZE #define SH_MAX_W(w) (w)->sh.max_width #define SH_MAX_H(w) (w)->sh.max_height -#define SH_INC(w) (w)->sh.flags & XCB_SIZE_HINT_P_RESIZE_INC +#define SH_INC(w) (w)->sh.flags & XCB_ICCCM_SIZE_HINT_P_RESIZE_INC #define SH_INC_W(w) (w)->sh.width_inc #define SH_INC_H(w) (w)->sh.height_inc #define SWM_MAX_FONT_STEPS (3) @@ -390,8 +405,8 @@ struct ws_win { struct swm_screen *s; /* always valid, never changes */ xcb_get_geometry_reply_t *wa; xcb_size_hints_t sh; - xcb_get_wm_class_reply_t ch; - xcb_wm_hints_t hints; + xcb_icccm_get_wm_class_reply_t ch; + xcb_icccm_wm_hints_t hints; }; TAILQ_HEAD(ws_win_list, ws_win); @@ -1487,6 +1502,8 @@ bar_print(struct swm_region *r, const char *s) sizeof(rect), &rect); /* draw back buffer */ + gcv[0] = r->s->c[SWM_S_COLOR_BAR].color; + xcb_change_gc(conn, r->s->bar_gc, XCB_GC_BACKGROUND, gcv); gcv[0] = r->s->c[SWM_S_COLOR_BAR_FONT].color; xcb_change_gc(conn, r->s->bar_gc, XCB_GC_FOREGROUND, gcv); xcb_image_text_8(conn, len, r->bar->buffer, r->s->bar_gc, x, @@ -3780,20 +3797,20 @@ get_win_name(xcb_window_t win) { char *name = NULL; xcb_get_property_cookie_t c; - xcb_get_text_property_reply_t r; + xcb_icccm_get_text_property_reply_t r; c = xcb_icccm_get_wm_name(conn, win); if (xcb_icccm_get_wm_name_reply(conn, c, &r, NULL)) { if (r.name_len > 0) { name = malloc(r.name_len + 1); if (!name) { - xcb_get_text_property_reply_wipe(&r); + xcb_icccm_get_text_property_reply_wipe(&r); return (NULL); } memcpy(name, r.name, r.name_len); name[r.name_len] = '\0'; } - xcb_get_text_property_reply_wipe(&r); + xcb_icccm_get_text_property_reply_wipe(&r); } return (name); @@ -5559,7 +5576,7 @@ grabkeys(void) { int num_screens; unsigned int j, k; - KeyCode code; + xcb_keycode_t *code; unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask | LockMask }; struct key *kp; @@ -5574,12 +5591,14 @@ grabkeys(void) xcb_ungrab_key(conn, XCB_GRAB_ANY, screens[k].root, XCB_MOD_MASK_ANY); RB_FOREACH(kp, key_tree, &keys) { - if ((code = XKeysymToKeycode(display, kp->keysym))) + if ((code = xcb_key_symbols_get_keycode(syms, + kp->keysym))) for (j = 0; j < LENGTH(modifiers); j++) - XGrabKey(display, code, + xcb_grab_key(conn, True, + screens[k].root, kp->mod | modifiers[j], - screens[k].root, True, - GrabModeAsync, GrabModeAsync); + *code, XCB_GRAB_MODE_ASYNC, + XCB_GRAB_MODE_ASYNC); } } } @@ -6329,7 +6348,7 @@ set_child_transient(struct ws_win *win, xcb_window_t *trans) struct ws_win *parent, *w; struct swm_region *r; struct workspace *ws; - xcb_wm_hints_t wmh; + xcb_icccm_wm_hints_t wmh; parent = find_window(win->transient); if (parent) @@ -6420,7 +6439,7 @@ manage_window(xcb_window_t id) uint32_t event_mask; xcb_atom_t prot; xcb_get_property_reply_t *gpr; - xcb_get_wm_protocols_reply_t wpr; + xcb_icccm_get_wm_protocols_reply_t wpr; if ((win = find_window(id)) != NULL) return (win); /* already being managed */ @@ -6490,14 +6509,14 @@ manage_window(xcb_window_t id) win->wa = xcb_get_geometry_reply(conn, xcb_get_geometry(conn, id), NULL); - xcb_get_wm_normal_hints_reply(conn, - xcb_get_wm_normal_hints(conn, id), + xcb_icccm_get_wm_normal_hints_reply(conn, + xcb_icccm_get_wm_normal_hints(conn, id), &win->sh, NULL); xcb_icccm_get_wm_hints_reply(conn, xcb_icccm_get_wm_hints(conn, id), &win->hints, NULL); - xcb_get_wm_transient_for_reply(conn, - xcb_get_wm_transient_for(conn, id), + xcb_icccm_get_wm_transient_for_reply(conn, + xcb_icccm_get_wm_transient_for(conn, id), &trans, NULL); if (trans) { win->transient = trans; @@ -6506,13 +6525,11 @@ manage_window(xcb_window_t id) "transient: 0x%x\n", win->id, win->transient); } - prot = xcb_atom_get_fast_reply(conn, - xcb_atom_get_fast(conn, False, strlen("WM_PROTOCOLS"), - "WM_PROTOCOLS"), - NULL); + prot = get_atom_from_string("WM_PROTOCOLS"); + /* get supported protocols */ - if (xcb_get_wm_protocols_reply(conn, - xcb_get_wm_protocols(conn, id, prot), + if (xcb_icccm_get_wm_protocols_reply(conn, + xcb_icccm_get_wm_protocols(conn, id, prot), &wpr, NULL)) { for (i = 0; i < wpr.atoms_len; i++) { if (wpr.atoms[i] == takefocus) @@ -6520,7 +6537,7 @@ manage_window(xcb_window_t id) if (wpr.atoms[i] == adelete) win->can_delete = 1; } - xcb_get_wm_protocols_reply_wipe(&wpr); + xcb_icccm_get_wm_protocols_reply_wipe(&wpr); } win->iconic = get_iconic(win); @@ -6614,8 +6631,8 @@ manage_window(xcb_window_t id) ewmh_autoquirk(win); - if (xcb_get_wm_class_reply(conn, - xcb_get_wm_class(conn, win->id), + if (xcb_icccm_get_wm_class_reply(conn, + xcb_icccm_get_wm_class(conn, win->id), &win->ch, NULL)) { DNPRINTF(SWM_D_CLASS, "manage_window: class: %s, name: %s\n", win->ch.class_name, win->ch.instance_name); @@ -6700,7 +6717,7 @@ free_window(struct ws_win *win) if (win->wa) free(win->wa); - xcb_get_wm_class_reply_wipe(&win->ch); + xcb_icccm_get_wm_class_reply_wipe(&win->ch); kill_refs(win); @@ -6868,7 +6885,7 @@ configurerequest(XEvent *e) DNPRINTF(SWM_D_EVENT, "configurerequest: new window: 0x%lx, " "new: %s, (x,y) w x h: (%d,%d) %d x %d\n", ev->window, - YESNO(new), wc.x, wc.y, wc.width, wc.height); + YESNO(new), wc[0], wc[1], wc[2], wc[3]); xcb_configure_window(conn, ev->window, mask, wc); } else if ((!win->manual || win->quirks & SWM_Q_ANYWHERE) && @@ -6902,8 +6919,8 @@ configurenotify(XEvent *e) win = find_window(e->xconfigure.window); if (win) { - xcb_get_wm_normal_hints_reply(conn, - xcb_get_wm_normal_hints(conn, win->id), + xcb_icccm_get_wm_normal_hints_reply(conn, + xcb_icccm_get_wm_normal_hints(conn, win->id), &win->sh, NULL); adjust_font(win); if (font_adjusted) @@ -7213,9 +7230,10 @@ propertynotify(XEvent *e) switch (ev->atom) { #if 0 - case XA_WM_NORMAL_HINTS: - long mask; - XGetWMNormalHints(display, win->id, &win->sh, &mask); + case XCB_ATOM_WM_NORMAL_HINTS: + xcb_icccm_get_wm_normal_hints(conn, + xcb_iccom_get_wm_normal_hints(conn, win->id), + &win->sh, NULL); warnx("normal hints: flag 0x%x", win->sh.flags); if (win->sh.flags & XCB_SIZE_HINT_P_MIN_SIZE) { WIDTH(win) = win->sh.min_width;