add support for _NET_WM_WINDOW_TYPE_DIALOG

This commit is contained in:
Julien Danjou 2008-01-06 22:28:27 +01:00
parent b4ff03c27e
commit 7faa483e89
1 changed files with 6 additions and 1 deletions

7
ewmh.c
View File

@ -47,6 +47,7 @@ static Atom net_wm_window_type;
static Atom net_wm_window_type_normal; static Atom net_wm_window_type_normal;
static Atom net_wm_window_type_dock; static Atom net_wm_window_type_dock;
static Atom net_wm_window_type_splash; static Atom net_wm_window_type_splash;
static Atom net_wm_window_type_dialog;
static Atom net_wm_icon; static Atom net_wm_icon;
static Atom net_wm_state; static Atom net_wm_state;
static Atom net_wm_state_sticky; 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_NORMAL", &net_wm_window_type_normal },
{ "_NET_WM_WINDOW_TYPE_DOCK", &net_wm_window_type_dock }, { "_NET_WM_WINDOW_TYPE_DOCK", &net_wm_window_type_dock },
{ "_NET_WM_WINDOW_TYPE_SPLASH", &net_wm_window_type_splash }, { "_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_ICON", &net_wm_icon },
{ "_NET_WM_STATE", &net_wm_state }, { "_NET_WM_STATE", &net_wm_state },
{ "_NET_WM_STATE_STICKY", &net_wm_state_sticky }, { "_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_normal;
atom[i++] = net_wm_window_type_dock; atom[i++] = net_wm_window_type_dock;
atom[i++] = net_wm_window_type_splash; atom[i++] = net_wm_window_type_splash;
atom[i++] = net_wm_window_type_dialog;
atom[i++] = net_wm_icon; atom[i++] = net_wm_icon;
atom[i++] = net_wm_state; atom[i++] = net_wm_state;
atom[i++] = net_wm_state_sticky; 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) if(state == net_wm_window_type_normal)
{ {
/* do nothing */ /* do nothing. this is REALLY IMPORTANT */
} }
else if(state == net_wm_window_type_dock else if(state == net_wm_window_type_dock
|| state == net_wm_window_type_splash) || state == net_wm_window_type_splash)
@ -283,6 +286,8 @@ ewmh_process_window_type_atom(Client *c, Atom state)
c->isfixed = True; c->isfixed = True;
c->isfloating = True; c->isfloating = True;
} }
else if (state == net_wm_window_type_dialog)
c->isfloating = True;
} }
void void
ewmh_process_client_message(XClientMessageEvent *ev) ewmh_process_client_message(XClientMessageEvent *ev)