Look for any ancestor when checking for fullscreen exit

This commit is contained in:
Ryan Dwyer 2018-10-08 23:39:35 +10:00
parent 88317b59ce
commit b8002fc0c4
3 changed files with 12 additions and 15 deletions

View file

@ -404,12 +404,11 @@ static void handle_map(struct wl_listener *listener, void *data) {
if (config->popup_during_fullscreen == POPUP_LEAVE &&
view->container->workspace &&
view->container->workspace->fullscreen &&
view->container->workspace->fullscreen->view &&
xdg_surface->toplevel->parent) {
struct wlr_xdg_surface *psurface = xdg_surface->toplevel->parent;
struct sway_xdg_shell_view *parent = psurface->data;
struct sway_view *sway_view = &parent->view;
if (sway_view->container && sway_view->container->is_fullscreen) {
container_set_fullscreen(sway_view->container, false);
struct sway_container *fs = view->container->workspace->fullscreen;
if (is_transient_for(view, fs->view)) {
container_set_fullscreen(fs, false);
}
}

View file

@ -399,12 +399,11 @@ static void handle_map(struct wl_listener *listener, void *data) {
if (config->popup_during_fullscreen == POPUP_LEAVE &&
view->container->workspace &&
view->container->workspace->fullscreen &&
view->container->workspace->fullscreen->view &&
xdg_surface->toplevel->parent) {
struct wlr_xdg_surface_v6 *psurface = xdg_surface->toplevel->parent;
struct sway_xdg_shell_v6_view *parent = psurface->data;
struct sway_view *sway_view = &parent->view;
if (sway_view->container && sway_view->container->is_fullscreen) {
container_set_fullscreen(sway_view->container, false);
struct sway_container *fs = view->container->workspace->fullscreen;
if (is_transient_for(view, fs->view)) {
container_set_fullscreen(fs, false);
}
}

View file

@ -410,12 +410,11 @@ static void handle_map(struct wl_listener *listener, void *data) {
if (config->popup_during_fullscreen == POPUP_LEAVE &&
view->container->workspace &&
view->container->workspace->fullscreen &&
view->container->workspace->fullscreen->view &&
xsurface->parent) {
struct wlr_xwayland_surface *psurface = xsurface->parent;
struct sway_xwayland_view *parent = psurface->data;
struct sway_view *sway_view = &parent->view;
if (sway_view->container && sway_view->container->is_fullscreen) {
container_set_fullscreen(sway_view->container, false);
struct sway_container *fs = view->container->workspace->fullscreen;
if (is_transient_for(view, fs->view)) {
container_set_fullscreen(fs, false);
}
}