|
@@ -1832,6 +1832,7 @@ void Wayland_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window)
|
|
|
} else {
|
|
|
libdecor_frame_set_app_id(data->shell_surface.libdecor.frame, data->app_id);
|
|
|
libdecor_frame_map(data->shell_surface.libdecor.frame);
|
|
|
+ libdecor_frame_set_visibility(data->shell_surface.libdecor.frame, !(window->flags & SDL_WINDOW_BORDERLESS));
|
|
|
|
|
|
if (c->zxdg_exporter_v2) {
|
|
|
data->exported = zxdg_exporter_v2_export_toplevel(c->zxdg_exporter_v2, data->surface);
|
|
@@ -1917,6 +1918,14 @@ void Wayland_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window)
|
|
|
xdg_toplevel_set_app_id(data->shell_surface.xdg.toplevel.xdg_toplevel, data->app_id);
|
|
|
xdg_toplevel_add_listener(data->shell_surface.xdg.toplevel.xdg_toplevel, &toplevel_listener_xdg, data);
|
|
|
|
|
|
+ // Create the window decorations
|
|
|
+ if (c->decoration_manager) {
|
|
|
+ data->server_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(c->decoration_manager, data->shell_surface.xdg.toplevel.xdg_toplevel);
|
|
|
+ zxdg_toplevel_decoration_v1_add_listener(data->server_decoration, &decoration_listener, window);
|
|
|
+ const enum zxdg_toplevel_decoration_v1_mode mode = !(window->flags & SDL_WINDOW_BORDERLESS) ? ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE : ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE;
|
|
|
+ zxdg_toplevel_decoration_v1_set_mode(data->server_decoration, mode);
|
|
|
+ }
|
|
|
+
|
|
|
if (c->zxdg_exporter_v2) {
|
|
|
data->exported = zxdg_exporter_v2_export_toplevel(c->zxdg_exporter_v2, data->surface);
|
|
|
zxdg_exported_v2_add_listener(data->exported, &exported_v2_listener, data);
|
|
@@ -1955,13 +1964,6 @@ void Wayland_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window)
|
|
|
} else
|
|
|
#endif
|
|
|
if (data->shell_surface_type == WAYLAND_SHELL_SURFACE_TYPE_XDG_POPUP || data->shell_surface_type == WAYLAND_SHELL_SURFACE_TYPE_XDG_TOPLEVEL) {
|
|
|
-
|
|
|
- // Create the window decorations
|
|
|
- if (data->shell_surface_type != WAYLAND_SHELL_SURFACE_TYPE_XDG_POPUP && data->shell_surface.xdg.toplevel.xdg_toplevel && c->decoration_manager) {
|
|
|
- data->server_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(c->decoration_manager, data->shell_surface.xdg.toplevel.xdg_toplevel);
|
|
|
- zxdg_toplevel_decoration_v1_add_listener(data->server_decoration, &decoration_listener, window);
|
|
|
- }
|
|
|
-
|
|
|
/* Unlike libdecor we need to call this explicitly to prevent a deadlock.
|
|
|
* libdecor will call this as part of their configure event!
|
|
|
* -flibit
|