Merge branch 'fix-segfault-in-fullscreennotify'

This commit is contained in:
Leonardo Hernández Hernández 2022-03-13 21:32:55 -06:00
commit 88f241d1cf
No known key found for this signature in database
GPG Key ID: E538897EE11B9624
2 changed files with 21 additions and 1 deletions

View File

@ -103,6 +103,16 @@ client_is_float_type(Client *c)
return 0; return 0;
} }
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 static inline int
client_is_unmanaged(Client *c) client_is_unmanaged(Client *c)
{ {

12
dwl.c
View File

@ -1043,7 +1043,14 @@ void
fullscreennotify(struct wl_listener *listener, void *data) fullscreennotify(struct wl_listener *listener, void *data)
{ {
Client *c = wl_container_of(listener, c, fullscreen); 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 * Monitor *
@ -1318,6 +1325,9 @@ mapnotify(struct wl_listener *listener, void *data)
/* Set initial monitor, tags, floating status, and focus */ /* Set initial monitor, tags, floating status, and focus */
applyrules(c); applyrules(c);
printstatus(); printstatus();
if (c->isfullscreen)
setfullscreen(c, 1);
} }
void void