diff options
author | Devin J. Pohly <djpohly@gmail.com> | 2020-05-03 00:44:16 -0500 |
---|---|---|
committer | Devin J. Pohly <djpohly@gmail.com> | 2020-05-03 00:44:16 -0500 |
commit | 5de1cfbebf6453da1b59eba53bcd23defd5f9f33 (patch) | |
tree | bb2bb2c6a89f79bbd6c6873a8c521548869f5b8c | |
parent | b10ef0e80a3c610d8ec0502b042df77df6f6ce1c (diff) |
allow setmon to specify alternate tags
-rw-r--r-- | dwl.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -164,7 +164,7 @@ static void setcursor(struct wl_listener *listener, void *data); static void setfloating(Client *c, int floating); static void setlayout(const Arg *arg); static void setmfact(const Arg *arg); -static void setmon(Client *c, Monitor *m); +static void setmon(Client *c, Monitor *m, unsigned int newtags); static void setup(void); static void spawn(const Arg *arg); static void tag(const Arg *arg); @@ -300,7 +300,7 @@ buttonpress(struct wl_listener *listener, void *data) cursor_mode = CurNormal; /* Drop the window off on its new monitor */ selmon = xytomon(cursor->x, cursor->y); - setmon(grabc, selmon); + setmon(grabc, selmon, 0); return; } break; @@ -1106,7 +1106,7 @@ setmfact(const Arg *arg) } void -setmon(Client *c, Monitor *m) +setmon(Client *c, Monitor *m, unsigned int newtags) { int hadfocus; Monitor *oldmon = c->mon; @@ -1123,7 +1123,7 @@ setmon(Client *c, Monitor *m) /* Make sure window actually overlaps with the monitor */ applybounds(c, &m->m); wlr_surface_send_enter(c->xdg_surface->surface, m->wlr_output); - c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */ + c->tags = newtags ? newtags : m->tagset[m->seltags]; /* assign tags of target monitor */ arrange(m); } /* Focus can change if c is the top of selmon before or after */ @@ -1262,7 +1262,7 @@ tagmon(const Arg *arg) Client *sel = selclient(); if (!sel) return; - setmon(sel, dirtomon(arg->i)); + setmon(sel, dirtomon(arg->i), 0); } void @@ -1341,7 +1341,7 @@ unmapnotify(struct wl_listener *listener, void *data) { /* Called when the surface is unmapped, and should no longer be shown. */ Client *c = wl_container_of(listener, c, unmap); - setmon(c, NULL); + setmon(c, NULL, 0); wl_list_remove(&c->link); wl_list_remove(&c->flink); wl_list_remove(&c->slink); |