diff options
| author | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2012-01-03 21:22:57 +0200 |
|---|---|---|
| committer | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2012-01-03 21:22:57 +0200 |
| commit | d6677283197cbb41fb0bd9f5da82d40031ebf000 (patch) | |
| tree | d0af4806789195e9bd26d7a21f679dc2bc88b16a /monsterwm.c | |
| parent | 0eb1f515752a8523d1f614e53f50b323be7150c4 (diff) | |
setfullscreen() separate function to set or unset fullscreen state of a window
Diffstat (limited to 'monsterwm.c')
| -rw-r--r-- | monsterwm.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/monsterwm.c b/monsterwm.c index 859ef9b..e5cfefb 100644 --- a/monsterwm.c +++ b/monsterwm.c @@ -86,6 +86,7 @@ static void rotate_desktop(const Arg *arg); static void run(void); static void save_desktop(int i); static void select_desktop(int i); +static void setfullscreen(client *c, Bool fullscreen); static void setup(void); static void sigchld(); static void spawn(const Arg *arg); @@ -196,20 +197,16 @@ void cleanup(void) { void client_to_desktop(const Arg *arg) { if (arg->i == current_desktop || !current) return; - client *c = current; int cd = current_desktop; - + client *c = current; + if (c->isfullscreen) setfullscreen(c, False); select_desktop(arg->i); add_window(c->win); save_desktop(arg->i); - select_desktop(cd); XUnmapWindow(dis, c->win); - if (c->isfullscreen) XChangeProperty(dis, c->win, netatoms[NET_WM_STATE], - XA_ATOM, 32, PropModeReplace, (unsigned char*)0, 0); removeclient(c); save_desktop(cd); - tile(); update_current(); if (FOLLOW_WINDOW) change_desktop(arg); @@ -224,14 +221,9 @@ void client_to_desktop(const Arg *arg) { void clientmessage(XEvent *e) { XClientMessageEvent *ev = &e->xclient; client *c; - if (!(c = wintoclient(ev->window)) || ev->message_type != netatoms[NET_WM_STATE] || ((unsigned)ev->data.l[1] != netatoms[NET_FULLSCREEN] && (unsigned)ev->data.l[2] != netatoms[NET_FULLSCREEN])) return; - - c->isfullscreen = (ev->data.l[0] == 1 || (ev->data.l[0] == 2 && !c->isfullscreen)); - XChangeProperty(dis, ev->window, netatoms[NET_WM_STATE], XA_ATOM, 32, PropModeReplace, - (unsigned char*)(c->isfullscreen ? &netatoms[NET_FULLSCREEN] : 0), c->isfullscreen); - + setfullscreen(c, (ev->data.l[0] == 1 || (ev->data.l[0] == 2 && !c->isfullscreen))); if (c->isfullscreen) XMoveResizeWindow(dis, c->win, 0, 0, ww + BORDER_WIDTH, wh + BORDER_WIDTH + PANEL_HEIGHT); else tile(); update_current(); @@ -557,6 +549,11 @@ void select_desktop(int i) { current_desktop = i; } +void setfullscreen(client *c, Bool fullscreen) { + XChangeProperty(dis, c->win, netatoms[NET_WM_STATE], XA_ATOM, 32, PropModeReplace, (unsigned char*) + ((c->isfullscreen = fullscreen) ? &netatoms[NET_FULLSCREEN] : 0), fullscreen); +} + void setup(void) { sigchld(); |
