diff --git a/ewmh.c b/ewmh.c index ad8891591..fabfaf5c9 100644 --- a/ewmh.c +++ b/ewmh.c @@ -47,6 +47,7 @@ static Atom net_wm_window_type; static Atom net_wm_window_type_normal; static Atom net_wm_window_type_dock; static Atom net_wm_window_type_splash; +static Atom net_wm_window_type_dialog; static Atom net_wm_icon; static Atom net_wm_state; static Atom net_wm_state_sticky; @@ -78,6 +79,7 @@ static AtomItem AtomNames[] = { "_NET_WM_WINDOW_TYPE_NORMAL", &net_wm_window_type_normal }, { "_NET_WM_WINDOW_TYPE_DOCK", &net_wm_window_type_dock }, { "_NET_WM_WINDOW_TYPE_SPLASH", &net_wm_window_type_splash }, + { "_NET_WM_WINDOW_TYPE_DIALOG", &net_wm_window_type_dialog }, { "_NET_WM_ICON", &net_wm_icon }, { "_NET_WM_STATE", &net_wm_state }, { "_NET_WM_STATE_STICKY", &net_wm_state_sticky }, @@ -128,6 +130,7 @@ ewmh_set_supported_hints(int phys_screen) atom[i++] = net_wm_window_type_normal; atom[i++] = net_wm_window_type_dock; atom[i++] = net_wm_window_type_splash; + atom[i++] = net_wm_window_type_dialog; atom[i++] = net_wm_icon; atom[i++] = net_wm_state; atom[i++] = net_wm_state_sticky; @@ -273,7 +276,7 @@ ewmh_process_window_type_atom(Client *c, Atom state) { if(state == net_wm_window_type_normal) { - /* do nothing */ + /* do nothing. this is REALLY IMPORTANT */ } else if(state == net_wm_window_type_dock || state == net_wm_window_type_splash) @@ -283,6 +286,8 @@ ewmh_process_window_type_atom(Client *c, Atom state) c->isfixed = True; c->isfloating = True; } + else if (state == net_wm_window_type_dialog) + c->isfloating = True; } void ewmh_process_client_message(XClientMessageEvent *ev)