diff options
author | Devin J. Pohly <djpohly@gmail.com> | 2020-07-21 23:25:16 -0400 |
---|---|---|
committer | Devin J. Pohly <djpohly@gmail.com> | 2020-07-21 23:25:16 -0400 |
commit | ce2c9e6660d8a620dc78bdd2d862951bc92dea01 (patch) | |
tree | b30ba589e7724ed7ec5aff1c1ea0b4e75b00dfbf | |
parent | e10c575bc8d0495a31e2e177196b28bbf7034e80 (diff) |
xwayland is the exceptional case, let xdg be 0
-rw-r--r-- | dwl.c | 63 |
1 files changed, 31 insertions, 32 deletions
@@ -42,7 +42,7 @@ #define LENGTH(X) (sizeof X / sizeof X[0]) #define END(A) ((A) + LENGTH(A)) #define TAGMASK ((1 << LENGTH(tags)) - 1) -#define WLR_SURFACE(C) (c->isxdg ? c->xdg_surface->surface : c->xwayland_surface->surface) +#define WLR_SURFACE(C) (c->isx11 ? c->xwayland_surface->surface : c->xdg_surface->surface) /* enums */ enum { CurNormal, CurMove, CurResize }; /* cursor */ @@ -74,7 +74,7 @@ typedef struct { struct wl_listener unmap; struct wl_listener destroy; struct wlr_box geom; /* layout-relative, includes border */ - int isxdg; + int isx11; Monitor *mon; int bw; unsigned int tags; @@ -281,10 +281,10 @@ applyrules(Client *c) /* rule matching */ c->isfloating = 0; - appid = c->isxdg ? c->xdg_surface->toplevel->app_id : - c->xwayland_surface->class; - title = c->isxdg ? c->xdg_surface->toplevel->title : - c->xwayland_surface->title; + appid = c->isx11 ? c->xwayland_surface->class : + c->xdg_surface->toplevel->app_id; + title = c->isx11 ? c->xwayland_surface->title : + c->xdg_surface->toplevel->title; if (!appid) appid = broken; if (!title) @@ -342,12 +342,12 @@ buttonpress(struct wl_listener *listener, void *data) case WLR_BUTTON_PRESSED:; /* Change focus if the button was _pressed_ over a client */ if ((c = xytoclient(cursor->x, cursor->y))) { - if (c->isxdg) - surface = wlr_xdg_surface_surface_at(c->xdg_surface, + if (c->isx11) + surface = wlr_surface_surface_at(c->xwayland_surface->surface, cursor->x - c->geom.x - c->bw, cursor->y - c->geom.y - c->bw, NULL, NULL); else - surface = wlr_surface_surface_at(c->xwayland_surface->surface, + surface = wlr_xdg_surface_surface_at(c->xdg_surface, cursor->x - c->geom.x - c->bw, cursor->y - c->geom.y - c->bw, NULL, NULL); focusclient(c, surface, 1); @@ -490,7 +490,6 @@ createnotifyxdg(struct wl_listener *listener, void *data) /* Allocate a Client for this surface */ c = xdg_surface->data = calloc(1, sizeof(*c)); c->xdg_surface = xdg_surface; - c->isxdg = 1; c->bw = borderpx; /* Tell the client not to try anything fancy */ @@ -515,7 +514,7 @@ createnotifyxwayland(struct wl_listener *listener, void *data) /* Allocate a Client for this surface */ c = xwayland_surface->data = calloc(1, sizeof(*c)); c->xwayland_surface = xwayland_surface; - c->isxdg = 0; + c->isx11 = 1; c->bw = borderpx; /* Listen to the various events it can emit */ @@ -652,16 +651,16 @@ focusclient(Client *c, struct wlr_surface *surface, int lift) * accordingly, e.g. show/hide a caret. */ if (tl != ptl && ptl) { - if (ptl->isxdg) - wlr_xdg_toplevel_set_activated(ptl->xdg_surface, 0); - else + if (ptl->isx11) wlr_xwayland_surface_activate(ptl->xwayland_surface, 0); + else + wlr_xdg_toplevel_set_activated(ptl->xdg_surface, 0); } if (tl != ptl && tl) { - if (tl->isxdg) - wlr_xdg_toplevel_set_activated(tl->xdg_surface, 1); - else + if (tl->isx11) wlr_xwayland_surface_activate(tl->xwayland_surface, 1); + else + wlr_xdg_toplevel_set_activated(tl->xdg_surface, 1); } } @@ -833,15 +832,15 @@ maprequest(struct wl_listener *listener, void *data) wl_list_insert(&fstack, &c->flink); wl_list_insert(&stack, &c->slink); - if (c->isxdg) { - wlr_xdg_surface_get_geometry(c->xdg_surface, &c->geom); - c->geom.width += 2 * c->bw; - c->geom.height += 2 * c->bw; - } else { + if (c->isx11) { c->geom.x = c->xwayland_surface->x; c->geom.y = c->xwayland_surface->y; c->geom.width = c->xwayland_surface->width + 2 * c->bw; c->geom.height = c->xwayland_surface->height + 2 * c->bw; + } else { + wlr_xdg_surface_get_geometry(c->xdg_surface, &c->geom); + c->geom.width += 2 * c->bw; + c->geom.height += 2 * c->bw; } /* Set initial monitor, tags, floating status, and focus */ @@ -888,12 +887,12 @@ motionnotify(uint32_t time) /* Otherwise, find the client under the pointer and send the event along. */ if ((c = xytoclient(cursor->x, cursor->y))) { - if (c->isxdg) - surface = wlr_xdg_surface_surface_at(c->xdg_surface, + if (c->isx11) + surface = wlr_surface_surface_at(c->xwayland_surface->surface, cursor->x - c->geom.x - c->bw, cursor->y - c->geom.y - c->bw, &sx, &sy); else - surface = wlr_surface_surface_at(c->xwayland_surface->surface, + surface = wlr_xdg_surface_surface_at(c->xdg_surface, cursor->x - c->geom.x - c->bw, cursor->y - c->geom.y - c->bw, &sx, &sy); } @@ -1082,10 +1081,10 @@ renderclients(Monitor *m, struct timespec *now) rdata.when = now, rdata.x = c->geom.x + c->bw, rdata.y = c->geom.y + c->bw; - if (c->isxdg) - wlr_xdg_surface_for_each_surface(c->xdg_surface, render, &rdata); - else + if (c->isx11) wlr_surface_for_each_surface(c->xwayland_surface->surface, render, &rdata); + else + wlr_xdg_surface_for_each_surface(c->xdg_surface, render, &rdata); } } @@ -1138,13 +1137,13 @@ resize(Client *c, int x, int y, int w, int h, int interact) c->geom.height = h; applybounds(c, bbox); /* wlroots makes this a no-op if size hasn't changed */ - if (c->isxdg) - wlr_xdg_toplevel_set_size(c->xdg_surface, - c->geom.width - 2 * c->bw, c->geom.height - 2 * c->bw); - else + if (c->isx11) wlr_xwayland_surface_configure(c->xwayland_surface, c->geom.x, c->geom.y, c->geom.width - 2 * c->bw, c->geom.height - 2 * c->bw); + else + wlr_xdg_toplevel_set_size(c->xdg_surface, + c->geom.width - 2 * c->bw, c->geom.height - 2 * c->bw); } void |