X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=scrotwm.c;h=5e3ced2ad8491c9a89ae1879a1f93f96f64972d1;hb=c593b8309ed314f4abd0865cbeb5ae163d14f3ca;hp=c0a6a9dcd0ad86c23cc63b6ded56a1f8466f0db7;hpb=ce20e49d8748ed4159131fbf329219592f9d4279;p=spectrwm.git diff --git a/scrotwm.c b/scrotwm.c index c0a6a9d..5e3ced2 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -52,7 +52,7 @@ static const char *cvstag = "$scrotwm$"; -#define SWM_VERSION "0.9.18" +#define SWM_VERSION "0.9.19" #include #include @@ -3941,8 +3941,10 @@ enternotify(XEvent *e) XEvent cne; struct ws_win *win; - DNPRINTF(SWM_D_EVENT, "enternotify: window: %lu mode %d detail %d\n", - ev->window, ev->mode, ev->detail); + DNPRINTF(SWM_D_FOCUS, "enternotify: window: %lu mode %d detail %d root " + "%lu subwindow %lu same_screen %d focus %d state %d\n", + ev->window, ev->mode, ev->detail, ev->root, ev->subwindow, + ev->same_screen, ev->focus, ev->state); /* * all these checks need to be in this order because the @@ -3953,10 +3955,20 @@ enternotify(XEvent *e) */ /* + * state is set when we are switching workspaces and focus is set when + * scrotwm launches via a restart + */ + if (ev->state || ev->focus) + return; + /* * happens when a window is created or destroyed and the border * crosses the mouse pointer and when switching ws + * + * we need the subwindow test to see if we came from root in order + * to give focus to floaters */ - if (ev->mode == NotifyNormal && ev->detail == NotifyVirtual) + if (ev->mode == NotifyNormal && ev->detail == NotifyVirtual && + ev->subwindow == 0) return; /* this window already has focus */