event enternotify etc..
This commit is contained in:
parent
3da9117a8b
commit
861110c5a3
@ -61,6 +61,26 @@ client_unmap(Client *c)
|
||||
void
|
||||
client_focus(Client *c)
|
||||
{
|
||||
puts("foc");
|
||||
|
||||
/* Unfocus selected */
|
||||
if(c->tag->sel && c->tag->sel != c)
|
||||
{
|
||||
XSetWindowBorder(W->dpy, c->win, 0xf0f0f0);
|
||||
}
|
||||
|
||||
/* Focus c */
|
||||
if((c->tag->sel = c))
|
||||
{
|
||||
XSetWindowBorder(W->dpy, c->win, 0xffffff);
|
||||
|
||||
XSetInputFocus(W->dpy, c->win, RevertToPointerRoot, CurrentTime);
|
||||
|
||||
XRaiseWindow(W->dpy, c->win);
|
||||
}
|
||||
/* Else, set input focus to root window */
|
||||
else
|
||||
XSetInputFocus(W->dpy, W->root, RevertToPointerRoot, CurrentTime);
|
||||
|
||||
}
|
||||
|
||||
@ -128,7 +148,6 @@ Client*
|
||||
client_new(Window w, XWindowAttributes *wa)
|
||||
{
|
||||
Client *c;
|
||||
XSetWindowAttributes at;
|
||||
|
||||
c = xcalloc(1, sizeof(Client));
|
||||
|
||||
@ -145,17 +164,20 @@ client_new(Window w, XWindowAttributes *wa)
|
||||
c->geo.h = wa->height;
|
||||
|
||||
/* X window attributes */
|
||||
at.event_mask = PropertyChangeMask;
|
||||
XChangeWindowAttributes(W->dpy, c->win, CWEventMask, &at);
|
||||
XSelectInput(W->dpy, w, EnterWindowMask | FocusChangeMask | PropertyChangeMask | StructureNotifyMask);
|
||||
|
||||
XSetWindowBorder(W->dpy, w, 0xffffff);
|
||||
XSetWindowBorderWidth(W->dpy, w, 1);
|
||||
|
||||
/* Attach */
|
||||
SLIST_INSERT_HEAD(&W->h.client, c, next);
|
||||
|
||||
client_map(c);
|
||||
|
||||
XMoveResizeWindow(W->dpy, c->win, c->geo.x, c->geo.y, c->geo.w, c->geo.h);
|
||||
XMoveResizeWindow(W->dpy, w, c->geo.x, c->geo.y, c->geo.w, c->geo.h);
|
||||
XRaiseWindow(W->dpy, w);
|
||||
|
||||
client_focus(c);
|
||||
client_configure(c);
|
||||
|
||||
return c;
|
||||
@ -167,8 +189,6 @@ client_remove(Client *c)
|
||||
XGrabServer(W->dpy);
|
||||
XSetErrorHandler(wmfs_error_handler_dummy);
|
||||
|
||||
XReparentWindow(W->dpy, c->win, W->root, c->geo.x, c->geo.y);
|
||||
|
||||
SLIST_REMOVE(&W->h.client, c, Client, next);
|
||||
|
||||
XUngrabServer(W->dpy);
|
||||
|
||||
@ -10,12 +10,18 @@
|
||||
|
||||
#define EVDPY(e) (e)->xany.display
|
||||
|
||||
static void
|
||||
event_buttonpress(XEvent *e)
|
||||
{
|
||||
XButtonEvent *ev = &e->xbutton;
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
event_enternotify(XEvent *e)
|
||||
{
|
||||
XCrossingEvent *ev = &e->xcrossing;
|
||||
Client *c;
|
||||
int n;
|
||||
|
||||
if((ev->mode != NotifyNormal || ev->detail == NotifyInferior)
|
||||
&& ev->window != W->root)
|
||||
@ -25,6 +31,12 @@ event_enternotify(XEvent *e)
|
||||
client_focus(c);
|
||||
}
|
||||
|
||||
static void
|
||||
event_clientmessageevent(XEvent *e)
|
||||
{
|
||||
XClientMessageEvent *ev = &e->xclient;
|
||||
}
|
||||
|
||||
static void
|
||||
event_configureevent(XEvent *e)
|
||||
{
|
||||
@ -44,6 +56,8 @@ event_configureevent(XEvent *e)
|
||||
c->geo.h = ev->height;
|
||||
|
||||
client_configure(c);
|
||||
|
||||
XMoveResizeWindow(EVDPY(e), c->win, c->geo.x, c->geo.y, c->geo.w, c->geo.h);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -204,8 +218,8 @@ event_init(void)
|
||||
while(i--)
|
||||
event_handle[i] = event_dummy;
|
||||
|
||||
/*event_handle[ButtonPress] = event_buttonpress;*/
|
||||
/*event_handle[ClientMessage] = event_clientmessageevent;*/
|
||||
event_handle[ButtonPress] = event_buttonpress;
|
||||
event_handle[ClientMessage] = event_clientmessageevent;
|
||||
event_handle[ConfigureRequest] = event_configureevent;
|
||||
event_handle[DestroyNotify] = event_destroynotify;
|
||||
event_handle[EnterNotify] = event_enternotify;
|
||||
|
||||
@ -18,6 +18,7 @@ screen_new(Geo *g)
|
||||
|
||||
SLIST_INSERT_HEAD(&W->h.screen, s, next);
|
||||
|
||||
/* Set as selected screen */
|
||||
W->screen = s;
|
||||
|
||||
return s;
|
||||
@ -26,6 +27,7 @@ screen_new(Geo *g)
|
||||
void
|
||||
screen_init(void)
|
||||
{
|
||||
Scr33n *s;
|
||||
Geo g;
|
||||
|
||||
g.x = 0;
|
||||
@ -35,7 +37,8 @@ screen_init(void)
|
||||
|
||||
SLIST_INIT(&W->h.screen);
|
||||
|
||||
screen_new(&g);
|
||||
s = screen_new(&g);
|
||||
tag_screen(s, tag_new(s, "tag"));
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@ -203,7 +203,7 @@ wmfs_loop(void)
|
||||
|
||||
W->running = true;
|
||||
|
||||
while(W->running)
|
||||
while(W->running || XPending(W->dpy))
|
||||
{
|
||||
XNextEvent(W->dpy, &ev);
|
||||
HANDLE_EVENT(&ev);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user