[ALL] Fix tag click, new stuff for the bar...
This commit is contained in:
49
wmfs.c
49
wmfs.c
@@ -45,8 +45,7 @@ arrange(void)
|
|||||||
|
|
||||||
focus(selbytag[seltag]);
|
focus(selbytag[seltag]);
|
||||||
layoutfunc[seltag]();
|
layoutfunc[seltag]();
|
||||||
updateall();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
attach(Client *c)
|
attach(Client *c)
|
||||||
@@ -299,6 +298,7 @@ init(void)
|
|||||||
mw = DisplayWidth (dpy, screen);
|
mw = DisplayWidth (dpy, screen);
|
||||||
mh = DisplayHeight (dpy, screen);
|
mh = DisplayHeight (dpy, screen);
|
||||||
seltag = 1;
|
seltag = 1;
|
||||||
|
taglen[0] = 3;
|
||||||
for(i = 0; i < conf.ntag+1; ++i)
|
for(i = 0; i < conf.ntag+1; ++i)
|
||||||
{
|
{
|
||||||
mwfact[i] = conf.tag[i-1].mwfact;
|
mwfact[i] = conf.tag[i-1].mwfact;
|
||||||
@@ -368,9 +368,7 @@ init(void)
|
|||||||
bar = XCreateWindow(dpy, root, 0, 0, mw, barheight, 0, DefaultDepth(dpy, screen),
|
bar = XCreateWindow(dpy, root, 0, 0, mw, barheight, 0, DefaultDepth(dpy, screen),
|
||||||
CopyFromParent, DefaultVisual(dpy, screen),
|
CopyFromParent, DefaultVisual(dpy, screen),
|
||||||
CWOverrideRedirect | CWBackPixmap | CWEventMask, &at);
|
CWOverrideRedirect | CWBackPixmap | CWEventMask, &at);
|
||||||
XSetWindowBackground(dpy, bar, conf.colors.bar);
|
|
||||||
XMapRaised(dpy, bar);
|
XMapRaised(dpy, bar);
|
||||||
taglen[0] = 3;
|
|
||||||
updatebar();
|
updatebar();
|
||||||
updatebutton(0);
|
updatebutton(0);
|
||||||
|
|
||||||
@@ -549,15 +547,17 @@ manage(Window w, XWindowAttributes *wa)
|
|||||||
conf.colors.bordernormal, conf.colors.bar);
|
conf.colors.bordernormal, conf.colors.bar);
|
||||||
XSelectInput(dpy, c->tbar, ExposureMask | EnterWindowMask);
|
XSelectInput(dpy, c->tbar, ExposureMask | EnterWindowMask);
|
||||||
|
|
||||||
c->button = XCreateSimpleWindow(dpy, root, c->x + c->w - 10, BUTY(c->y),
|
c->button = XCreateSimpleWindow(dpy, root, BUTX(c->x, c->w),
|
||||||
5, BUTH, 1, conf.colors.bordernormal,
|
BUTY(c->y), BUTH, BUTH,
|
||||||
|
1, conf.colors.bordernormal,
|
||||||
conf.colors.borderfocus);
|
conf.colors.borderfocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
XConfigureWindow(dpy, w, CWBorderWidth, &winc);
|
XConfigureWindow(dpy, w, CWBorderWidth, &winc);
|
||||||
setborder(w, conf.colors.bordernormal);
|
setborder(w, conf.colors.bordernormal);
|
||||||
grabbuttons(c, False);
|
grabbuttons(c, False);
|
||||||
XSelectInput(dpy, w, EnterWindowMask | FocusChangeMask | PropertyChangeMask | StructureNotifyMask);
|
XSelectInput(dpy, w, EnterWindowMask | FocusChangeMask
|
||||||
|
| PropertyChangeMask | StructureNotifyMask);
|
||||||
setsizehints(c);
|
setsizehints(c);
|
||||||
updatetitle(c);
|
updatetitle(c);
|
||||||
if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success))
|
if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success))
|
||||||
@@ -643,6 +643,8 @@ mouseaction(Client *c, int x, int y, int type)
|
|||||||
(ocx + (ev.xmotion.x - x)),
|
(ocx + (ev.xmotion.x - x)),
|
||||||
(ocy + (ev.xmotion.y - y)),
|
(ocy + (ev.xmotion.y - y)),
|
||||||
c->w, c->h, 1);
|
c->w, c->h, 1);
|
||||||
|
|
||||||
|
/* for don't pass on the bar */
|
||||||
if(c->y < barheight + conf.ttbarheight - 5)
|
if(c->y < barheight + conf.ttbarheight - 5)
|
||||||
{
|
{
|
||||||
moveresize(c, c->x, barheight+conf.ttbarheight, c->w, c->h, 1);
|
moveresize(c, c->x, barheight+conf.ttbarheight, c->w, c->h, 1);
|
||||||
@@ -708,15 +710,16 @@ moveresize(Client *c, int x, int y, int w, int h, bool r)
|
|||||||
c->x = x; c->y = y;
|
c->x = x; c->y = y;
|
||||||
c->w = w; c->h = h;
|
c->w = w; c->h = h;
|
||||||
|
|
||||||
|
|
||||||
if((y-conf.ttbarheight) <= barheight)
|
if((y-conf.ttbarheight) <= barheight)
|
||||||
y = barheight+conf.ttbarheight;
|
y = barheight+conf.ttbarheight;
|
||||||
|
|
||||||
XMoveResizeWindow(dpy, c->win, x, y, w ,h);
|
XMoveResizeWindow(dpy, c->win, x, y, w ,h);
|
||||||
|
|
||||||
if(conf.ttbarheight)
|
if(conf.ttbarheight)
|
||||||
{
|
{
|
||||||
XMoveResizeWindow(dpy, c->tbar, x, y - conf.ttbarheight, w, conf.ttbarheight);
|
XMoveResizeWindow(dpy, c->tbar, x, y - conf.ttbarheight, w, conf.ttbarheight);
|
||||||
XMoveResizeWindow(dpy, c->button, (x + w - 10), BUTY(y), 5, BUTH);
|
XMoveWindow(dpy, c->button, BUTX(x, w), BUTY(y));
|
||||||
}
|
}
|
||||||
updateall();
|
updateall();
|
||||||
XSync(dpy, False);
|
XSync(dpy, False);
|
||||||
@@ -1039,7 +1042,7 @@ unhide(Client *c)
|
|||||||
if(conf.ttbarheight)
|
if(conf.ttbarheight)
|
||||||
{
|
{
|
||||||
XMoveWindow(dpy, c->tbar, c->x, (c->y - conf.ttbarheight));
|
XMoveWindow(dpy, c->tbar, c->x, (c->y - conf.ttbarheight));
|
||||||
XMoveWindow(dpy, c->button, (c->x + c->w -10), (c->y - 9));
|
XMoveWindow(dpy, c->button, BUTX(c->x, c->w), BUTY(c->y));
|
||||||
}
|
}
|
||||||
|
|
||||||
c->hide = False;
|
c->hide = False;
|
||||||
@@ -1082,23 +1085,25 @@ void
|
|||||||
updatebar(void)
|
updatebar(void)
|
||||||
{
|
{
|
||||||
int i ,j;
|
int i ,j;
|
||||||
char buf[conf.ntag][100];
|
char buf[conf.ntag][sizeof(char)];
|
||||||
char p[3];
|
char *p = malloc(sizeof(char));
|
||||||
|
|
||||||
tm = localtime(<);
|
tm = localtime(<);
|
||||||
lt = time(NULL);
|
lt = time(NULL);
|
||||||
|
|
||||||
XClearWindow(dpy, bar);
|
XSetForeground(dpy, gc, conf.colors.bar);
|
||||||
|
XFillRectangle(dpy, bar, gc, 0, 0, mw, barheight);
|
||||||
|
|
||||||
for(i = 0; i < conf.ntag; ++i)
|
for(i = 0; i < conf.ntag; ++i)
|
||||||
{
|
{
|
||||||
|
/* Make the tags string */
|
||||||
ITOA(p, clientpertag(i+1));
|
ITOA(p, clientpertag(i+1));
|
||||||
sprintf(buf[i], "%s<%s> ", conf.tag[i].name, (clientpertag(i+1)) ? p : "");
|
sprintf(buf[i], "%s<%s> ", conf.tag[i].name, (clientpertag(i+1)) ? p : "");
|
||||||
taglen[i+1] = taglen[i] + fonty *
|
taglen[i+1] = (taglen[i] + fonty * (strlen(conf.tag[i].name) +
|
||||||
(strlen(conf.tag[i].name) + strlen(buf[i]) - strlen(conf.tag[i].name)) + fonty-4;
|
strlen(buf[i]) - strlen(conf.tag[i].name)) + fonty) - 2;
|
||||||
/* Rectangle for the tag background */
|
/* Rectangle for the tag background */
|
||||||
XSetForeground(dpy, gc, (i+1 == seltag) ? conf.colors.tagselbg : conf.colors.bar);
|
XSetForeground(dpy, gc, (i+1 == seltag) ? conf.colors.tagselbg : conf.colors.bar);
|
||||||
XFillRectangle(dpy, bar, gc, taglen[i] - 4, 0, (strlen(buf[i])*fonty), barheight);
|
XFillRectangle(dpy, bar, gc, taglen[i] - 3, 0, (strlen(buf[i])*fonty) -2, barheight);
|
||||||
|
|
||||||
/* Draw tag */
|
/* Draw tag */
|
||||||
XSetForeground(dpy, gc, (i+1 == seltag) ? conf.colors.tagselfg : conf.colors.text);
|
XSetForeground(dpy, gc, (i+1 == seltag) ? conf.colors.tagselfg : conf.colors.text);
|
||||||
XDrawString(dpy, bar, gc, taglen[i], fonth, buf[i], strlen(buf[i]));
|
XDrawString(dpy, bar, gc, taglen[i], fonth, buf[i], strlen(buf[i]));
|
||||||
@@ -1114,7 +1119,7 @@ updatebar(void)
|
|||||||
getlayoutsym(layout[seltag]),
|
getlayoutsym(layout[seltag]),
|
||||||
strlen(getlayoutsym(layout[seltag])));
|
strlen(getlayoutsym(layout[seltag])));
|
||||||
|
|
||||||
/* Draw status */
|
/* Draw status */
|
||||||
sprintf(bartext,"mwfact: %.2f nmaster: %i - %02i:%02i",
|
sprintf(bartext,"mwfact: %.2f nmaster: %i - %02i:%02i",
|
||||||
mwfact[seltag],
|
mwfact[seltag],
|
||||||
nmaster[seltag],
|
nmaster[seltag],
|
||||||
@@ -1129,9 +1134,12 @@ updatebar(void)
|
|||||||
/* Update Bar Buttons */
|
/* Update Bar Buttons */
|
||||||
updatebutton(1);
|
updatebutton(1);
|
||||||
|
|
||||||
return;
|
free(p);
|
||||||
|
XSync(dpy, False);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* if c is 0, you can execute this function for the first time
|
/* if c is 0, you can execute this function for the first time
|
||||||
* else the button is just updated */
|
* else the button is just updated */
|
||||||
void
|
void
|
||||||
@@ -1213,7 +1221,7 @@ updatetitle(Client *c)
|
|||||||
{
|
{
|
||||||
XClearWindow(dpy, c->tbar);
|
XClearWindow(dpy, c->tbar);
|
||||||
XSetForeground(dpy, gc, conf.colors.text);
|
XSetForeground(dpy, gc, conf.colors.text);
|
||||||
XDrawString(dpy, c->tbar, gc, 5, fonth-1, c->title, strlen(c->title));
|
XDrawString(dpy, c->tbar, gc, 5, fonth-2, c->title, strlen(c->title));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1305,7 +1313,6 @@ main(int argc,char **argv)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Let's Go ! */
|
/* Let's Go ! */
|
||||||
init_conf();
|
init_conf();
|
||||||
init();
|
init();
|
||||||
|
|||||||
6
wmfs.h
6
wmfs.h
@@ -50,6 +50,7 @@
|
|||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include <confuse.h>
|
#include <confuse.h>
|
||||||
|
#include <pthread.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
/* Defines */
|
/* Defines */
|
||||||
@@ -63,8 +64,9 @@
|
|||||||
#define Resize 1
|
#define Resize 1
|
||||||
#define MAXTAG 36
|
#define MAXTAG 36
|
||||||
#define NBUTTON 5
|
#define NBUTTON 5
|
||||||
#define BUTY(y) (y - conf.ttbarheight + 3)
|
#define BUTY(y) y - conf.ttbarheight + 3
|
||||||
#define BUTH (conf.ttbarheight - 6)
|
#define BUTH conf.ttbarheight - 6
|
||||||
|
#define BUTX(x, w) x + w - BUTH/400
|
||||||
|
|
||||||
/* Client Structure */
|
/* Client Structure */
|
||||||
typedef struct Client Client;
|
typedef struct Client Client;
|
||||||
|
|||||||
Reference in New Issue
Block a user