}
static void
-_toplevel_init(E_Desktop_Xdg_Toplevel_V6 *toplevel)
+_toplevel_desktop_surface_interface_init(E_Desktop_Surface_Interface *iface)
{
- struct ds_xdg_toplevel_v6 *ds_toplevel = toplevel->ds_toplevel;
+ iface->configure_send = _toplevel_configure_send;
+ iface->configure = NULL;
+ iface->map = NULL;
+ iface->unmap = NULL;
+}
+
+static void
+_toplevel_init(E_Desktop_Xdg_Toplevel_V6 *toplevel, struct ds_xdg_surface_v6 *ds_xdg_surface)
+{
+ struct ds_xdg_toplevel_v6 *ds_toplevel = ds_xdg_surface->toplevel;
+ E_Surface *surface = e_surface_from_ds_surface(ds_xdg_surface->ds_surface);
+
+ toplevel->ds_toplevel = ds_toplevel;
+
+ _toplevel_desktop_surface_interface_init(&toplevel->impl);
+ e_desktop_toplevel_init(&toplevel->base, &toplevel->impl, surface, ds_xdg_surface->resource);
_toplevel_title_update(toplevel);
_toplevel_app_id_update(toplevel);
e_desktop_toplevel_fullscreen_request(&toplevel->base);
}
-static void
-_toplevel_desktop_surface_interface_init(E_Desktop_Surface_Interface *iface)
+static E_Desktop_Xdg_Toplevel_V6 *
+_toplevel_create(struct ds_xdg_surface_v6 *ds_xdg_surface)
{
- iface->configure_send = _toplevel_configure_send;
- iface->configure = NULL;
- iface->map = NULL;
- iface->unmap = NULL;
+ E_Desktop_Xdg_Toplevel_V6 *toplevel;
+
+ toplevel = E_NEW(E_Desktop_Xdg_Toplevel_V6, 1);
+ if (!toplevel)
+ return NULL;
+
+ _toplevel_init(toplevel, ds_xdg_surface);
+ _toplevel_listener_init(toplevel);
+
+ LOG("Create E_Desktop_Xdg_Toplevel_V6(%p)", toplevel);
+
+ return toplevel;
}
static void
_toplevel_add(E_Desktop_Xdg_Shell_V6 *shell, struct ds_xdg_surface_v6 *ds_xdg_surface)
{
E_Desktop_Xdg_Toplevel_V6 *toplevel;
- E_Surface *surface = e_surface_from_ds_surface(ds_xdg_surface->ds_surface);
- toplevel = E_NEW(E_Desktop_Xdg_Toplevel_V6, 1);
+ toplevel = _toplevel_create(ds_xdg_surface);
if (!toplevel)
{
ERR("Could not create E_Desktop_Xdg_Toplevel_V6");
return;
}
- toplevel->ds_toplevel = ds_xdg_surface->toplevel;
-
- _toplevel_desktop_surface_interface_init(&toplevel->impl);
- e_desktop_toplevel_init(&toplevel->base, &toplevel->impl, surface, ds_xdg_surface->resource);
-
- _toplevel_init(toplevel);
- _toplevel_listener_init(toplevel);
-
e_desktop_shell_toplevel_add(shell->desktop_shell, &toplevel->base);
-
- ELOGF("XDG6", "Created E_Desktop_Xdg_Toplevel_V6(%p)", e_surface_ec_get(surface), toplevel);
}
static void