tag: Add tag_set & tag_transfert with a int parametre (for event use and make easier the uicb tag function)

This commit is contained in:
Martin Duquesnoy 2008-12-14 19:27:57 +01:00
parent e33c20f1bb
commit 1454d4e7f7
3 changed files with 77 additions and 62 deletions

View File

@ -40,7 +40,6 @@ buttonpress(XButtonEvent *ev)
{
Client *c;
int i;
char s[6];
screen_get_sel();
@ -74,17 +73,16 @@ buttonpress(XButtonEvent *ev)
/* Tag */
for(i = 1; i < conf.ntag[selscreen] + 1; ++i)
{
ITOA(s, i);
if(ev->window == infobar[selscreen].tags[i]->win)
{
if(ev->button == Button1)
uicb_tag(s);
tag_set(i);
if(ev->button == Button3)
uicb_tagtransfert(s);
tag_transfert(sel, i);
if(ev->button == Button4)
uicb_tag("+1");
tag_set(seltag[selscreen] + 1);
if (ev->button == Button5)
uicb_tag("-1");
tag_set(seltag[selscreen] - 1);
}
}
@ -109,7 +107,6 @@ void
clientmessageevent(XClientMessageEvent *ev)
{
Client *c;
char tmp[3];
int i, mess_t = 0;
if(ev->format != 32)
@ -122,14 +119,12 @@ clientmessageevent(XClientMessageEvent *ev)
{
/* Manage _NET_CURRENT_DESKTOP */
if(mess_t == net_current_desktop
&& ev->data.l[0] >= 1
&& ev->data.l[0] >= 0
&& ev->data.l[0] < conf.ntag[selscreen])
{
ITOA(tmp, (int)(ev->data.l[0] + 1));
uicb_tag(tmp);
}
tag_set((int)(ev->data.l[0] + 1));
/* Manage _NET_ACTIVE_WINDOW */
if(mess_t == net_active_window)
else if(mess_t == net_active_window)
if((c = client_gb_win(ev->data.l[0])))
client_focus(c);
}

116
src/tag.c
View File

@ -33,7 +33,66 @@
#include "wmfs.h"
/** Set a tag
/* Set the tag
* \param tag The tag number
*/
void
tag_set(int tag)
{
screen_get_sel();
if(!tag)
tag = 1;
if(conf.tag_round)
{
if(tag < 1)
seltag[selscreen] = conf.ntag[selscreen];
else if(tag > conf.ntag[selscreen])
seltag[selscreen] = 1;
else
seltag[selscreen] = tag;
}
else
{
if(tag == seltag[selscreen]
|| tag > conf.ntag[selscreen])
return;
seltag[selscreen] = tag;
}
ewmh_get_current_desktop();
arrange();
client_focus(NULL);
return;
}
/* Transfert a client to a tag
* \param c Client pointer
* \param tag Tag
*/
void
tag_transfert(Client *c, int tag)
{
screen_get_sel();
if(!c || c->tag == tag)
return;
if(!tag)
tag = 1;
c->tag = tag;
arrange();
if(c == sel)
client_focus(NULL);
return;
}
/** Uicb Set a tag
* \param cmd Tag number or '+' / '-', uicb_t type
*/
void
@ -41,41 +100,10 @@ uicb_tag(uicb_t cmd)
{
int tmp = atoi(cmd);
screen_get_sel();
if(!tmp)
tmp = 1;
if(conf.tag_round)
{
if(tmp + seltag[selscreen] < 1)
seltag[selscreen] = conf.ntag[selscreen];
else if (tmp + seltag[selscreen] > conf.ntag[selscreen])
seltag[selscreen] = 1;
else
seltag[selscreen] += tmp;
}
if(cmd[0] == '+' || cmd[0] == '-')
tag_set(seltag[selscreen] + tmp);
else
{
if(cmd[0] == '+' || cmd[0] == '-')
{
if(tmp + seltag[selscreen] < 1
|| tmp + seltag[selscreen] > conf.ntag[selscreen])
return;
seltag[selscreen] += tmp;
}
else
{
if(tmp == seltag[selscreen]
|| tmp > conf.ntag[selscreen])
return;
seltag[selscreen] = tmp;
}
}
ewmh_get_current_desktop();
arrange();
client_focus(NULL);
tag_set(tmp);
return;
}
@ -86,7 +114,7 @@ uicb_tag(uicb_t cmd)
void
uicb_tag_next(uicb_t cmd)
{
uicb_tag("+1");
tag_set(seltag[selscreen] + 1);
return;
}
@ -97,7 +125,7 @@ uicb_tag_next(uicb_t cmd)
void
uicb_tag_prev(uicb_t cmd)
{
uicb_tag("-1");
tag_set(seltag[selscreen] - 1);
return;
}
@ -109,19 +137,9 @@ uicb_tag_prev(uicb_t cmd)
void
uicb_tagtransfert(uicb_t cmd)
{
int n = atoi(cmd);
CHECK(sel);
screen_get_sel();
if(!sel || n == seltag[selscreen])
return;
if(!n)
n = 1;
sel->tag = n;
arrange();
tag_transfert(sel, atoi(cmd));
return;
}

View File

@ -202,6 +202,8 @@ char* alias_to_str(char *conf_choice);
void uicb_spawn(uicb_t);
/* tag.c */
void tag_set(int tag);
void tag_transfert(Client *c, int tag);
void uicb_tag(uicb_t);
void uicb_tag_next(uicb_t);
void uicb_tag_prev(uicb_t);