Layout/Tag: Add request_update in Tag struct. WMFS Doesn't update layout each time you switch the tag, but only when it's requested.
This commit is contained in:
parent
787ecfee69
commit
e82d75b5ca
14
src/client.c
14
src/client.c
@ -725,7 +725,11 @@ client_set_wanted_tag(Client *c)
|
||||
{
|
||||
c->screen = i;
|
||||
c->tag = j;
|
||||
arrange(i);
|
||||
|
||||
if(c->tag != seltag[selscreen])
|
||||
tags[c->screen][c->tag].request_update = True;
|
||||
|
||||
tags[c->screen][c->tag].layout.func(c->screen);
|
||||
}
|
||||
|
||||
return;
|
||||
@ -812,7 +816,13 @@ client_unmanage(Client *c)
|
||||
XSync(dpy, False);
|
||||
XUngrabServer(dpy);
|
||||
ewmh_get_client_list();
|
||||
arrange(c->screen);
|
||||
|
||||
/* Arrange */
|
||||
if(c->tag != seltag[selscreen])
|
||||
tags[c->screen][c->tag].request_update = True;
|
||||
else
|
||||
tags[c->screen][c->tag].layout.func(c->screen);
|
||||
|
||||
XFree(c->title);
|
||||
|
||||
/* To focus the previous client */
|
||||
|
||||
@ -334,7 +334,7 @@ conf_tag_section(cfg_t *cfg_t)
|
||||
* MAXTAG (32) print an error and create only one.
|
||||
*/
|
||||
Tag default_tag = { "WMFS", NULL, 0,
|
||||
0.50, 1, False, IB_Top,
|
||||
0.50, 1, False, False, IB_Top,
|
||||
layout_name_to_struct(conf.layout, "tile_right", conf.nlayout, layout_list) };
|
||||
|
||||
conf.tag_round = cfg_getbool(cfg_t, "tag_round");
|
||||
|
||||
@ -116,9 +116,8 @@ mouse_move(Client *c)
|
||||
{
|
||||
c->screen = selscreen;
|
||||
c->tag = i;
|
||||
arrange(selscreen);
|
||||
if(c->screen != oscreen)
|
||||
arrange(oscreen);
|
||||
tags[c->screen][c->tag].request_update = True;
|
||||
arrange(oscreen);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -214,6 +214,7 @@ typedef struct
|
||||
float mwfact;
|
||||
int nmaster;
|
||||
Bool resizehint;
|
||||
Bool request_update;
|
||||
int barpos;
|
||||
Layout layout;
|
||||
} Tag;
|
||||
|
||||
20
src/tag.c
20
src/tag.c
@ -68,7 +68,23 @@ tag_set(int tag)
|
||||
if(tags[selscreen][otag].barpos != tags[selscreen][seltag[selscreen]].barpos)
|
||||
infobar_set_position(tags[selscreen][seltag[selscreen]].barpos);
|
||||
|
||||
arrange(selscreen);
|
||||
/* arrange(selscreen); */
|
||||
for(c = clients; c; c = c->next)
|
||||
if(c->screen == selscreen)
|
||||
{
|
||||
if(!ishide(c, selscreen))
|
||||
client_unhide(c);
|
||||
else
|
||||
client_hide(c);
|
||||
}
|
||||
|
||||
infobar_draw(selscreen);
|
||||
|
||||
if(tags[selscreen][tag].request_update)
|
||||
{
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
tags[selscreen][tag].request_update = False;
|
||||
}
|
||||
|
||||
/* To focus the first client in the new tag */
|
||||
for(c = clients; c; c = c->next)
|
||||
@ -104,6 +120,8 @@ tag_transfert(Client *c, int tag)
|
||||
|
||||
client_update_attributes(c);
|
||||
|
||||
tags[c->screen][tag].request_update = True;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -224,6 +224,10 @@ scan(void)
|
||||
client_update_attributes(c);
|
||||
}
|
||||
|
||||
/* Set update layout request */
|
||||
for(c = clients; c; c = c->next)
|
||||
tags[c->screen][c->tag].request_update = True;
|
||||
|
||||
for(i = 0; i < screen_count(); ++i)
|
||||
arrange(i);
|
||||
|
||||
@ -330,7 +334,10 @@ set_statustext(char *str)
|
||||
void
|
||||
signal_handle(int sig)
|
||||
{
|
||||
printf("pwet\n");
|
||||
exiting = True;
|
||||
quit();
|
||||
exit(EXIT_SUCCESS);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -351,6 +351,7 @@ Client *sel;
|
||||
func_name_list_t *func_list;
|
||||
func_name_list_t *layout_list;
|
||||
uint numlockmask;
|
||||
int layout_update_request[2];
|
||||
|
||||
#endif /* WMFS_H */
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user