Don't focus dock or splash windows except via EWMH ACTIVE_WINDOW requests.

This commit is contained in:
Kris Maglione 2010-05-27 14:14:37 -04:00
parent f70a4130bd
commit 8c5e6b9eb9
6 changed files with 10 additions and 6 deletions

View File

@ -475,7 +475,9 @@ focus(Client *c, bool user) {
View *v;
Frame *f;
USED(user);
if(!user && c->nofocus)
return;
f = c->sel;
if(!f)
return;

View File

@ -161,6 +161,7 @@ struct Client {
bool urgent;
bool borderless;
bool titleless;
bool nofocus;
bool noinput;
};

View File

@ -242,9 +242,11 @@ ewmh_getwintype(Client *c) {
c->w.ewmh.type = mask;
if(mask & (TypeDock|TypeMenu|TypeToolbar)) {
c->borderless = 1;
c->titleless = 1;
c->borderless = true;
c->titleless = true;
}
if(mask & (TypeSplash|TypeDock))
c->nofocus = true;
}
static void

View File

@ -90,7 +90,7 @@ void client_seturgent(Client*, int, int);
void client_setviews(Client*, char**);
void client_unmap(Client*, int state);
Frame* client_viewframe(Client *c, View *v);
void focus(Client*, bool restack);
void focus(Client*, bool user);
void fullscreen(Client*, int, long);
Client* group_leader(Group*);
int map_frame(Client*);

View File

@ -221,7 +221,6 @@ enter_event(Window *w, void *aux, XCrossingEvent *e) {
ignoreenter == e->serial ? " (ignored)" : "");
if(e->detail != NotifyInferior)
if(e->serial != ignoreenter && (f->area->floating || !f->collapsed))
if(!(c->w.ewmh.type & TypeSplash))
focus(f->client, false);
}
mouse_checkresize(f, Pt(e->x, e->y), false);

View File

@ -23,6 +23,6 @@ CFLAGS += \
-Wreturn-type \
-Wstrict-prototypes \
-Wtrigraphs
MKDEP = cpp -M
MKDEP = cpp -MM
SOCFLAGS += -fPIC