commit d52fb463eeda2168b7b0135d758a1e2a57be9af7 from: rsc date: Thu Aug 11 03:38:16 2005 UTC Fix crash reported by Andrey. Make focus-follows-mouse easier to find for those who want it (cough, Ron Minnich, cough). commit - b5b71ffbaee0a7a34b93f22541effe76a54c39b5 commit + d52fb463eeda2168b7b0135d758a1e2a57be9af7 blob - b2b74eea0da2b15d7329772ec4aa11c304f1100b blob + aa08fcf97068ff1dbe0939067c0d49505a133efb --- src/cmd/rio/dat.h +++ src/cmd/rio/dat.h @@ -150,6 +150,7 @@ extern int debug; extern int solidsweep; extern int numvirtuals; extern int scrolling; +extern int ffm; /* focus follows mouse */ extern Atom exit_rio; extern Atom restart_rio; blob - 45642774c9f7b38e54e4512e2d0bba186a699296 blob + 457153df644e1e6f6fef141d3447829a5735c900 --- src/cmd/rio/event.c +++ src/cmd/rio/event.c @@ -282,12 +282,18 @@ newwindow(XCreateWindowEvent *e) void destroy(Window w) { + int i; Client *c; curtime = CurrentTime; c = getclient(w, 0); if(c == 0) return; + + if(numvirtuals > 1) + for(i=0; itime; + if(!ffm) if(e->mode != NotifyGrab || e->detail != NotifyNonlinearVirtual) return; c = getclient(e->window, 0); if(c != 0 && c != current){ /* someone grabbed the pointer; make them current */ - XMapRaised(dpy, c->parent); + if(!ffm) + XMapRaised(dpy, c->parent); top(c); active(c); } blob - bc43a99fff092051435a9cea16842d73b5f6b65f blob + d20c3a003d91c4f479333028f359e4aa14e86fa2 --- src/cmd/rio/main.c +++ src/cmd/rio/main.c @@ -40,6 +40,7 @@ int scrolling; int num_screens; int solidsweep = 0; int numvirtuals = 0; +int ffm = 0; Atom exit_rio; Atom restart_rio; @@ -95,6 +96,10 @@ main(int argc, char *argv[]) background = 1; else if(strcmp(argv[i], "-debug") == 0) debug++; + /* + else if(strcmp(argv[i], "-ffm") == 0) + ffm++; + */ else if(strcmp(argv[i], "-font") == 0 && i+1arrow; attr.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | ColormapChangeMask - | ButtonPressMask | ButtonReleaseMask | PropertyChangeMask | - KeyPressMask; + | ButtonPressMask | ButtonReleaseMask | PropertyChangeMask + | KeyPressMask | EnterWindowMask; mask = CWCursor|CWEventMask; XChangeWindowAttributes(dpy, s->root, mask, &attr); XSync(dpy, False); blob - 21195d2eeb8690ccb3e76b82cc7b2c4a18c9288b blob + eb92b7441a63376301e700a1d40893686aeceb49 --- src/cmd/rio/menu.c +++ src/cmd/rio/menu.c @@ -319,7 +319,7 @@ unhide(int n, int map) } numhidden--; - for(i = n; i < numhidden; i ++){ + for(i = n; i < numhidden; i++){ hiddenc[i] = hiddenc[i+1]; b3items[B3FIXED+i] = b3items[B3FIXED+i+1]; } @@ -368,9 +368,12 @@ button2(int n) void switch_to_c(int n, Client *c) { - if(c && c->next) - switch_to_c(n,c->next); + if(c == 0) + return; + if(c->next) + switch_to_c(n, c->next); + if(c->parent == DefaultRootWindow(dpy)) return; @@ -384,8 +387,8 @@ switch_to_c(int n, Client *c) int i; for(i = 0; i < numhidden; i++) - if(c == hiddenc[i]) - break; + if(c == hiddenc[i]) + break; if(i == numhidden){ XMapWindow(dpy, c->window);