E_Desktop_Surface surface;
};
-static E_Desktop_Toplevel *_toplevel_create(E_Surface *e_surface, E_Desktop_Surface_Interface *iface, struct wl_resource *shell_surface_resource);
-
static void
_shell_cb_display_destroy(struct wl_listener *listener, void *data)
{
return NULL;
}
-EINTERN E_Desktop_Toplevel *
-e_desktop_shell_toplevel_create(E_Desktop_Shell *shell, E_Surface *e_surface, E_Desktop_Surface_Interface *iface, struct wl_resource *shell_surface_resource)
+EINTERN void
+e_desktop_shell_toplevel_add(E_Desktop_Shell *shell, E_Desktop_Toplevel *toplevel)
{
- E_Desktop_Toplevel *toplevel;
-
- toplevel = _toplevel_create(e_surface, iface, shell_surface_resource);
- if (!toplevel)
- return NULL;
+ e_comp_wl_shell_surface_ready(e_surface_ec_get(toplevel->surface.surface));
wl_signal_emit(&shell->events.new_toplevel, toplevel);
-
- return toplevel;
}
static void _surface_finish(E_Desktop_Surface *surface);
e_shell_e_client_shsurface_assign(ec, shell_surface_resource, NULL);
e_shell_e_client_toplevel_set(ec);
- e_comp_wl_shell_surface_ready(ec);
}
-static E_Desktop_Toplevel *
-_toplevel_create(E_Surface *e_surface, E_Desktop_Surface_Interface *iface, struct wl_resource *shell_surface_resource)
+EINTERN E_Desktop_Toplevel *
+e_desktop_toplevel_create(E_Surface *e_surface, E_Desktop_Surface_Interface *iface, struct wl_resource *shell_surface_resource)
{
E_Desktop_Toplevel *toplevel;
void (*unmap)(E_Desktop_Surface_Interface *iface);
};
-E_Desktop_Toplevel *e_desktop_shell_toplevel_create(E_Desktop_Shell *shell, E_Surface *e_surface, E_Desktop_Surface_Interface *iface, struct wl_resource *shell_surface_resource);
+void e_desktop_shell_toplevel_add(E_Desktop_Shell *shell, E_Desktop_Toplevel *toplevel);
+E_Desktop_Toplevel *e_desktop_toplevel_create(E_Surface *e_surface, E_Desktop_Surface_Interface *iface, struct wl_resource *shell_surface_resource);
void e_desktop_toplevel_destroy(E_Desktop_Toplevel *toplevel);
void e_desktop_toplevel_title_set(E_Desktop_Toplevel *toplevel, const char *title);
void e_desktop_toplevel_app_id_set(E_Desktop_Toplevel *toplevel, const char *app_id);
_toplevel_desktop_surface_interface_init(&toplevel->impl);
toplevel->ds_toplevel = ds_xdg_surface->toplevel;
- toplevel->toplevel = e_desktop_shell_toplevel_create(shell->desktop_shell, surface, &toplevel->impl, ds_xdg_surface->resource);
+ toplevel->toplevel = e_desktop_toplevel_create(surface, &toplevel->impl, ds_xdg_surface->resource);
_toplevel_init(toplevel);
_toplevel_listener_init(toplevel);
+ e_desktop_shell_toplevel_add(shell->desktop_shell, toplevel->toplevel);
+
ELOGF("XDG6", "Created E_Desktop_Xdg_Toplevel_V6(%p)", e_surface_ec_get(surface), toplevel);
}