From 166a233babe7d2adf2d07a8fc2602d9f7ae424c6 Mon Sep 17 00:00:00 2001 From: Marco Peereboom Date: Thu, 22 Jan 2009 00:08:19 +0000 Subject: [PATCH] More focus simplicfication --- scrotwm.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/scrotwm.c b/scrotwm.c index 714224d..b5e2ffb 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -89,7 +89,6 @@ #endif #endif -#define SWM_DEBUG /* #define SWM_DEBUG */ #ifdef SWM_DEBUG #define DPRINTF(x...) do { if (swm_debug) fprintf(stderr, x); } while(0) @@ -1354,6 +1353,21 @@ struct key { { MODKEY | ShiftMask, XK_Tab, focus, {.id = SWM_ARG_ID_FOCUSPREV} }, }; +#if 0 +/* mouse */ +enum { client_click, root_click }; +struct button { + unsigned int click; + unsigned int mask; + unsigned int button; + void (*func)(struct swm_region *r, union arg *); + union arg args; +} buttons[] = { + /* action key mouse button func args */ + { client_click, MODKEY, Button2, NULL, {0} }, +}; +#endif + void updatenumlockmask(void) { @@ -1621,27 +1635,17 @@ enternotify(XEvent *e) { XCrossingEvent *ev = &e->xcrossing; struct ws_win *win; - int i, j; DNPRINTF(SWM_D_EVENT, "enternotify: window: %lu\n", ev->window); - if ((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && - ev->window != ev->root) - return; if (ignore_enter) { /* eat event(r) to prevent autofocus */ ignore_enter--; return; } - /* brute force for now */ - for (i = 0; i < ScreenCount(display); i++) { - for (j = 0; j < SWM_WS_MAX; j++) { - TAILQ_FOREACH(win, &screens[i].ws[j].winlist , entry) { - if (win->id == ev->window) - focus_win(win); - } - } - } + + if ((win = find_window(ev->window)) != NULL) + focus_win(win); } void @@ -1843,7 +1847,7 @@ setup_screens(void) screens[i].root = RootWindow(display, i); XGetWindowAttributes(display, screens[i].root, &wa); XSelectInput(display, screens[i].root, - ButtonPressMask | wa.your_event_mask); + EnterWindowMask | ButtonPressMask | wa.your_event_mask); /* set default colors */ screens[i].color_focus = name_to_color("red"); -- 1.7.10.4