diff options
-rw-r--r-- | client.h | 10 | ||||
-rw-r--r-- | dwl.c | 12 |
2 files changed, 21 insertions, 1 deletions
@@ -104,6 +104,16 @@ client_is_float_type(Client *c) } static inline int +client_wants_fullscreen(Client *c) +{ +#ifdef XWAYLAND + if (client_is_x11(c)) + return c->surface.xwayland->fullscreen; +#endif + return c->surface.xdg->toplevel->requested.fullscreen; +} + +static inline int client_is_unmanaged(Client *c) { #ifdef XWAYLAND @@ -1043,7 +1043,14 @@ void fullscreennotify(struct wl_listener *listener, void *data) { Client *c = wl_container_of(listener, c, fullscreen); - setfullscreen(c, !c->isfullscreen); + int fullscreen = client_wants_fullscreen(c); + + if (!c->mon) { + /* if the client is not mapped yet, let mapnotify() call setfullscreen() */ + c->isfullscreen = fullscreen; + return; + } + setfullscreen(c, fullscreen); } Monitor * @@ -1318,6 +1325,9 @@ mapnotify(struct wl_listener *listener, void *data) /* Set initial monitor, tags, floating status, and focus */ applyrules(c); printstatus(); + + if (c->isfullscreen) + setfullscreen(c, 1); } void |