> if(tmp_win && tmp_win->full_name != "npviewer.bin") > XSetInputFocus (dpy, w, RevertToPointerRoot, tim);
Sorry. I take back what I just said. The above works because it is essentially an implementation of sloppy focus, since focus is not being given back to the root window (when tmp_window is NULL). What happens is that after the fullscreen window has been realized, the focus is subsequently given back to root (SetFocus is called with tmp_win set to NULL). This happens from function HandleLeaveNotify, where it says "pretend there was a focus out". Any idea why this is there? If I comment out that call to SetFocus, flash fullscreen works without any other changes, and everything (so far) seems to work as before.