mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-10-14 23:09:53 +00:00
xwm: Detect legacy fullscreen modes
This commit is contained in:
parent
1b6fed41dd
commit
59f44c184d
|
@ -1898,12 +1898,36 @@ static const struct weston_shell_client shell_client = {
|
||||||
send_configure
|
send_configure
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
legacy_fullscreen(struct weston_wm *wm,
|
||||||
|
struct weston_wm_window *window,
|
||||||
|
struct weston_output **output_ret)
|
||||||
|
{
|
||||||
|
struct weston_compositor *compositor = wm->server->compositor;
|
||||||
|
struct weston_output *output;
|
||||||
|
|
||||||
|
/* Heuristics for detecting legacy fullscreen windows... */
|
||||||
|
|
||||||
|
wl_list_for_each(output, &compositor->output_list, link) {
|
||||||
|
if (output->x == window->x &&
|
||||||
|
output->y == window->y &&
|
||||||
|
output->width == window->width &&
|
||||||
|
output->height == window->height &&
|
||||||
|
window->override_redirect) {
|
||||||
|
*output_ret = output;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
static void
|
static void
|
||||||
xserver_map_shell_surface(struct weston_wm *wm,
|
xserver_map_shell_surface(struct weston_wm *wm,
|
||||||
struct weston_wm_window *window)
|
struct weston_wm_window *window)
|
||||||
{
|
{
|
||||||
struct weston_shell_interface *shell_interface =
|
struct weston_shell_interface *shell_interface =
|
||||||
&wm->server->compositor->shell_interface;
|
&wm->server->compositor->shell_interface;
|
||||||
|
struct weston_output *output;
|
||||||
|
|
||||||
if (!shell_interface->create_shell_surface)
|
if (!shell_interface->create_shell_surface)
|
||||||
return;
|
return;
|
||||||
|
@ -1923,6 +1947,11 @@ xserver_map_shell_surface(struct weston_wm *wm,
|
||||||
} else if (!window->override_redirect) {
|
} else if (!window->override_redirect) {
|
||||||
shell_interface->set_toplevel(window->shsurf);
|
shell_interface->set_toplevel(window->shsurf);
|
||||||
return;
|
return;
|
||||||
|
} else if (legacy_fullscreen(wm, window, &output)) {
|
||||||
|
window->fullscreen = 1;
|
||||||
|
shell_interface->set_fullscreen(window->shsurf,
|
||||||
|
WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
|
||||||
|
0, output);
|
||||||
} else {
|
} else {
|
||||||
shell_interface->set_xwayland(window->shsurf,
|
shell_interface->set_xwayland(window->shsurf,
|
||||||
window->x,
|
window->x,
|
||||||
|
|
Loading…
Reference in a new issue