Tag: Add tag_prev_sel function request by Erus (Feature #29)

This commit is contained in:
Martin Duquesnoy 2010-02-25 20:39:04 +01:00
parent 77cb589f03
commit 7e44e4b314
4 changed files with 24 additions and 7 deletions

View File

@ -53,6 +53,7 @@ func_name_list_t tmp_func_list[] =
{"tag", uicb_tag },
{"tag_next", uicb_tag_next },
{"tag_prev", uicb_tag_prev },
{"tag_prev_sel", uicb_tag_prev_sel },
{"tag_transfert", uicb_tagtransfert },
{"set_mwfact", uicb_set_mwfact },
{"set_nmaster", uicb_set_nmaster },
@ -394,9 +395,10 @@ conf_tag_section(char *src)
sc = screen_count();
/* Alloc all */
conf.ntag = emalloc(sc, sizeof(int));
tags = emalloc(sc, sizeof(Tag*));
seltag = emalloc(sc, sizeof(int));
conf.ntag = emalloc(sc, sizeof(int));
tags = emalloc(sc, sizeof(Tag*));
seltag = emalloc(sc, sizeof(int));
prevseltag = emalloc(sc, sizeof(int));
for(i = 0; i < sc; ++i)
seltag[i] = 1;

View File

@ -53,7 +53,6 @@ void
mouse_move_tile_client(Client **c)
{
Client *sc;
Window w;
int d;

View File

@ -38,12 +38,11 @@
void
tag_set(int tag)
{
int otag;
Client *c;
screen_get_sel();
otag = seltag[selscreen];
prevseltag[selscreen] = seltag[selscreen];
if(conf.tag_round)
{
@ -59,13 +58,14 @@ tag_set(int tag)
if(!tag || tag == seltag[selscreen]
|| tag > conf.ntag[selscreen])
return;
seltag[selscreen] = tag;
}
ewmh_update_current_tag_prop();
/* Arrange infobar position */
if(tags[selscreen][otag].barpos != tags[selscreen][seltag[selscreen]].barpos)
if(tags[selscreen][prevseltag[selscreen]].barpos != tags[selscreen][seltag[selscreen]].barpos)
infobar_set_position(tags[selscreen][seltag[selscreen]].barpos);
arrange(selscreen, False);
@ -170,3 +170,17 @@ uicb_tagtransfert(uicb_t cmd)
return;
}
/** Set the previous selected tag
* \param cmd uicb_t type unused
*/
void
uicb_tag_prev_sel(uicb_t cmd)
{
screen_get_sel();
tag_set(prevseltag[selscreen]);
return;
}

View File

@ -268,6 +268,7 @@ void uicb_tag(uicb_t);
void uicb_tag_next(uicb_t);
void uicb_tag_prev(uicb_t);
void uicb_tagtransfert(uicb_t);
void uicb_tag_prev_sel(uicb_t cmd);
/* screen.c */
int screen_count(void);
@ -377,6 +378,7 @@ Atom *net_atom;
InfoBar *infobar;
Tag **tags;
int *seltag;
int *prevseltag;
Menu menulayout;
/* Important Client */