31#ifndef FENNEC_PLATFORM_LINUX_WAYLAND_WINDOW_H
32#define FENNEC_PLATFORM_LINUX_WAYLAND_WINDOW_H
46struct libdecor_configuration;
51class wayland_window :
public window_base<wayland_server> {
53 wayland_window(display_server* server,
const config& cfg, window* parent);
56 void initialize()
override;
57 void shutdown()
override;
59 void* get_native_handle()
override;
61 bool set_flag(uint8_t flag,
bool val)
override;
67 xdg_surface* xdgsurface;
68 xdg_toplevel* xdgtoplevel;
69 wl_callback* frame_callback;
71#if FENNEC_HAS_LIBDECOR
72 libdecor_frame* libdecorframe;
73 libdecor_configuration* libdecorcfg;
79 void _update_size(
const ivec2& size);
84 static void _wl_surface_listen_enter(
void*, wl_surface*, wl_output*);
85 static void _wl_surface_listen_leave(
void*, wl_surface*, wl_output*);
86 static void _wl_surface_listen_preferred_buffer_scale(
void*, wl_surface*, int32_t);
87 static void _wl_surface_listen_preferred_buffer_transform(
void*, wl_surface*, uint32_t);
89 static void _wl_frame_listen_done(
void*, wl_callback*, uint32_t);
91 static void _xdg_surface_listen_configure(
void*, xdg_surface*, uint32_t);
93 static void _xdg_toplevel_listen_configure(
void*, xdg_toplevel*, int32_t, int32_t, wl_array*);
94 static void _xdg_toplevel_listen_configure_bounds(
void*, xdg_toplevel*, int32_t, int32_t);
95 static void _xdg_toplevel_listen_close(
void*, xdg_toplevel*);
96 static void _xdg_toplevel_listen_wm_capabilities(
void*, xdg_toplevel*, wl_array*);
98#if FENNEC_HAS_LIBDECOR
99 static void _libdecor_frame_listen_configure(libdecor_frame*, libdecor_configuration*,
void*);
100 static void _libdecor_frame_listen_close(libdecor_frame*,
void*);
101 static void _libdecor_frame_listen_commit(libdecor_frame*,
void*);
102 static void _libdecor_frame_listen_dismiss_popup(libdecor_frame*,
const char*,
void*);