Simplify client_set_state.
This commit is contained in:
parent
da889f0365
commit
f857b0eb99
1 changed files with 45 additions and 82 deletions
127
openbox/client.c
127
openbox/client.c
|
@ -3523,6 +3523,7 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2)
|
||||||
gboolean above = self->above;
|
gboolean above = self->above;
|
||||||
gboolean below = self->below;
|
gboolean below = self->below;
|
||||||
gint i;
|
gint i;
|
||||||
|
gboolean value;
|
||||||
|
|
||||||
if (!(action == OBT_PROP_ATOM(NET_WM_STATE_ADD) ||
|
if (!(action == OBT_PROP_ATOM(NET_WM_STATE_ADD) ||
|
||||||
action == OBT_PROP_ATOM(NET_WM_STATE_REMOVE) ||
|
action == OBT_PROP_ATOM(NET_WM_STATE_REMOVE) ||
|
||||||
|
@ -3538,103 +3539,65 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2)
|
||||||
/* if toggling, then pick whether we're adding or removing */
|
/* if toggling, then pick whether we're adding or removing */
|
||||||
if (action == OBT_PROP_ATOM(NET_WM_STATE_TOGGLE)) {
|
if (action == OBT_PROP_ATOM(NET_WM_STATE_TOGGLE)) {
|
||||||
if (state == OBT_PROP_ATOM(NET_WM_STATE_MODAL))
|
if (state == OBT_PROP_ATOM(NET_WM_STATE_MODAL))
|
||||||
action = modal ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
value = modal;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_VERT))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_VERT))
|
||||||
action = self->max_vert ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
value = self->max_vert;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_HORZ))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_HORZ))
|
||||||
action = self->max_horz ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
value = self->max_horz;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_SHADED))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_SHADED))
|
||||||
action = shaded ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
value = shaded;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_TASKBAR))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_TASKBAR))
|
||||||
action = self->skip_taskbar ?
|
value = self->skip_taskbar;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_PAGER))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_PAGER))
|
||||||
action = self->skip_pager ?
|
value = self->skip_pager;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_HIDDEN))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_HIDDEN))
|
||||||
action = self->iconic ?
|
value = self->iconic;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_FULLSCREEN))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_FULLSCREEN))
|
||||||
action = fullscreen ?
|
value = fullscreen;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_ABOVE))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_ABOVE))
|
||||||
action = self->above ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
value = self->above;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_BELOW))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_BELOW))
|
||||||
action = self->below ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
value = self->below;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(NET_WM_STATE_DEMANDS_ATTENTION))
|
else if (state == OBT_PROP_ATOM(NET_WM_STATE_DEMANDS_ATTENTION))
|
||||||
action = self->demands_attention ?
|
value = self->demands_attention;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
|
||||||
else if (state == OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED))
|
else if (state == OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED))
|
||||||
action = undecorated ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
value = undecorated;
|
||||||
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
action = value ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) :
|
||||||
|
OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action == OBT_PROP_ATOM(NET_WM_STATE_ADD)) {
|
value = action == OBT_PROP_ATOM(NET_WM_STATE_ADD);
|
||||||
if (state == OBT_PROP_ATOM(NET_WM_STATE_MODAL)) {
|
if (state == OBT_PROP_ATOM(NET_WM_STATE_MODAL)) {
|
||||||
modal = TRUE;
|
modal = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_VERT)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_VERT)) {
|
||||||
max_vert = TRUE;
|
max_vert = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_HORZ)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_HORZ)) {
|
||||||
max_horz = TRUE;
|
max_horz = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SHADED)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SHADED)) {
|
||||||
shaded = TRUE;
|
shaded = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_TASKBAR)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_TASKBAR)) {
|
||||||
self->skip_taskbar = TRUE;
|
self->skip_taskbar = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_PAGER)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_PAGER)) {
|
||||||
self->skip_pager = TRUE;
|
self->skip_pager = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_HIDDEN)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_HIDDEN)) {
|
||||||
iconic = TRUE;
|
iconic = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_FULLSCREEN)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_FULLSCREEN)) {
|
||||||
fullscreen = TRUE;
|
fullscreen = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_ABOVE)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_ABOVE)) {
|
||||||
above = TRUE;
|
above = value;
|
||||||
|
/* only unset below when setting above, otherwise you can't get to
|
||||||
|
the normal layer */
|
||||||
|
if (value)
|
||||||
below = FALSE;
|
below = FALSE;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_BELOW)) {
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_BELOW)) {
|
||||||
|
/* and vice versa */
|
||||||
|
if (value)
|
||||||
above = FALSE;
|
above = FALSE;
|
||||||
below = TRUE;
|
below = value;
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_DEMANDS_ATTENTION)){
|
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_DEMANDS_ATTENTION)){
|
||||||
demands_attention = TRUE;
|
demands_attention = value;
|
||||||
} else if (state == OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED)) {
|
} else if (state == OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED)) {
|
||||||
undecorated = TRUE;
|
undecorated = value;
|
||||||
}
|
|
||||||
|
|
||||||
} else { /* action == OBT_PROP_ATOM(NET_WM_STATE_REMOVE) */
|
|
||||||
if (state == OBT_PROP_ATOM(NET_WM_STATE_MODAL)) {
|
|
||||||
modal = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_VERT)) {
|
|
||||||
max_vert = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_MAXIMIZED_HORZ)) {
|
|
||||||
max_horz = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SHADED)) {
|
|
||||||
shaded = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_TASKBAR)) {
|
|
||||||
self->skip_taskbar = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_SKIP_PAGER)) {
|
|
||||||
self->skip_pager = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_HIDDEN)) {
|
|
||||||
iconic = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_FULLSCREEN)) {
|
|
||||||
fullscreen = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_ABOVE)) {
|
|
||||||
above = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_BELOW)) {
|
|
||||||
below = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(NET_WM_STATE_DEMANDS_ATTENTION)){
|
|
||||||
demands_attention = FALSE;
|
|
||||||
} else if (state == OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED)) {
|
|
||||||
undecorated = FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue