Tag/Clients: Add client_ignore tag option (~Feature #6 requested by Elpinoutoufou)
This commit is contained in:
parent
46608a14be
commit
f8115d686d
22
src/client.c
22
src/client.c
@ -435,7 +435,7 @@ client_hide(Client *c)
|
||||
Bool
|
||||
ishide(Client *c, int screen)
|
||||
{
|
||||
if((c->tag == seltag[screen] && c->screen == screen)
|
||||
if(((c->tag == seltag[screen] || c->tag == MAXTAG + 1) && c->screen == screen)
|
||||
|| tags[screen][seltag[screen]].tagad & TagFlag(c->tag))
|
||||
return False;
|
||||
|
||||
@ -703,7 +703,8 @@ client_moveresize(Client *c, XRectangle geo, Bool r)
|
||||
if(c->flags & FreeFlag || tags[c->screen][c->tag].layout.func == freelayout)
|
||||
c->free_geo = geo;
|
||||
|
||||
if((c->screen = screen_get_with_geo(c->geo.x, c->geo.y)) != os)
|
||||
if((c->screen = screen_get_with_geo(c->geo.x, c->geo.y)) != os
|
||||
&& c->tag != MAXTAG + 1)
|
||||
c->tag = seltag[c->screen];
|
||||
|
||||
frame_moveresize(c, c->geo);
|
||||
@ -1256,3 +1257,20 @@ uicb_checkclist(uicb_t cmd)
|
||||
return True;
|
||||
}
|
||||
|
||||
/** Set selected client on all tag (ignore tags
|
||||
*\para cmd uicb_t type unused
|
||||
*/
|
||||
void
|
||||
uicb_client_ignore_tag(uicb_t cmd)
|
||||
{
|
||||
CHECK(sel);
|
||||
|
||||
screen_get_sel();
|
||||
|
||||
sel->tag = ((sel->tag == MAXTAG + 1) ? seltag[selscreen] : MAXTAG + 1);
|
||||
|
||||
arrange(sel->screen, True);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ func_name_list_t tmp_func_list[] =
|
||||
{"client_screen_prev", uicb_client_screen_prev },
|
||||
{"client_move", uicb_client_move },
|
||||
{"client_resize", uicb_client_resize },
|
||||
{"client_ignore_tag", uicb_client_ignore_tag },
|
||||
{"toggle_max", uicb_togglemax },
|
||||
{"layout_next", uicb_layout_next },
|
||||
{"layout_prev", uicb_layout_prev },
|
||||
|
||||
11
src/tag.c
11
src/tag.c
@ -76,7 +76,18 @@ tag_set(int tag)
|
||||
|
||||
for(i = 1; i < conf.ntag[selscreen] + 1; ++i)
|
||||
if(tags[selscreen][i].tagad & TagFlag(seltag[selscreen]))
|
||||
{
|
||||
al = True;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check for ignore_tag clients */
|
||||
for(c = clients; c; c = c->next)
|
||||
if(c->tag == MAXTAG + 1 && c->screen == selscreen)
|
||||
{
|
||||
al = True;
|
||||
break;
|
||||
}
|
||||
|
||||
arrange(selscreen, al);
|
||||
|
||||
|
||||
@ -241,7 +241,7 @@ scan(void)
|
||||
|
||||
c = client_manage(w[i], &wa, False);
|
||||
|
||||
if(tag != -1)
|
||||
if(tag != -1 && tag != MAXTAG + 1)
|
||||
c->tag = tag;
|
||||
if(screen != -1 && screen <= s - 1)
|
||||
c->screen = screen;
|
||||
|
||||
@ -201,6 +201,7 @@ void uicb_ignore_next_client_rules(uicb_t cmd);
|
||||
void uicb_clientlist(uicb_t cmd);
|
||||
void uicb_client_select(uicb_t cmd);
|
||||
Bool uicb_checkclist(uicb_t);
|
||||
void uicb_client_ignore_tag(uicb_t);
|
||||
|
||||
/* ewmh.c */
|
||||
void ewmh_init_hints(void);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user