diff --git a/client.c b/client.c index 5c88d2c2..a496e129 100644 --- a/client.c +++ b/client.c @@ -414,15 +414,8 @@ client_layer_translator(client_t *c) /* then deal with windows type */ switch(c->type) { - case WINDOW_TYPE_DOCK: - return LAYER_ABOVE; case WINDOW_TYPE_DESKTOP: return LAYER_DESKTOP; - case WINDOW_TYPE_DIALOG: - case WINDOW_TYPE_MENU: - case WINDOW_TYPE_TOOLBAR: - case WINDOW_TYPE_UTILITY: - return LAYER_ABOVE; default: break; } diff --git a/ewmh.c b/ewmh.c index 85e17e06..f81f8f75 100644 --- a/ewmh.c +++ b/ewmh.c @@ -581,6 +581,11 @@ ewmh_client_check_hints(client_t *c) c->type = MAX(c->type, WINDOW_TYPE_TOOLBAR); else if(state[i] == _NET_WM_WINDOW_TYPE_UTILITY) c->type = MAX(c->type, WINDOW_TYPE_UTILITY); + + if(c->type != WINDOW_TYPE_NORMAL + && c->type != WINDOW_TYPE_DESKTOP + && !c->transient_for) + client_setabove(c, true); } p_delete(&reply); diff --git a/property.c b/property.c index 3caa0b05..1fd85e4c 100644 --- a/property.c +++ b/property.c @@ -51,6 +51,7 @@ property_update_wm_transient_for(client_t *c, xcb_get_property_reply_t *reply) c->type = WINDOW_TYPE_DIALOG; c->transient_for = client_getbywin(trans); + client_setabove(c, false); } static int