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:
martin 2009-06-20 03:11:49 +02:00
parent 787ecfee69
commit e82d75b5ca
7 changed files with 43 additions and 7 deletions

View File

@ -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 */

View File

@ -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");

View File

@ -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);
}
}

View File

@ -214,6 +214,7 @@ typedef struct
float mwfact;
int nmaster;
Bool resizehint;
Bool request_update;
int barpos;
Layout layout;
} Tag;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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 */