xdg-shell: add wlr_xdg_toplevel_configure()

A struct wlr_xdg_toplevel_configure is passed in with the whole
state. This makes it a lot clearer that the size and WM state are
always sent to the client.
master
Simon Ser 8 months ago committed by Kirill Primak
parent 8582b45c9e
commit 098cb9b7a3

@ -374,6 +374,12 @@ struct wlr_xdg_positioner *wlr_xdg_positioner_from_resource(
*/
void wlr_xdg_surface_ping(struct wlr_xdg_surface *surface);
/**
* Configure the toplevel. Returns the associated configure serial.
*/
uint32_t wlr_xdg_toplevel_configure(struct wlr_xdg_toplevel *toplevel,
const struct wlr_xdg_toplevel_configure *configure);
/**
* Request that this toplevel surface be the given size. Returns the associated
* configure serial.

@ -545,6 +545,30 @@ void wlr_xdg_toplevel_send_close(struct wlr_xdg_toplevel *toplevel) {
xdg_toplevel_send_close(toplevel->resource);
}
uint32_t wlr_xdg_toplevel_configure(struct wlr_xdg_toplevel *toplevel,
const struct wlr_xdg_toplevel_configure *configure) {
toplevel->scheduled.width = configure->width;
toplevel->scheduled.height = configure->height;
toplevel->scheduled.maximized = configure->maximized;
toplevel->scheduled.fullscreen = configure->fullscreen;
toplevel->scheduled.resizing = configure->resizing;
toplevel->scheduled.activated = configure->activated;
toplevel->scheduled.suspended = configure->suspended;
toplevel->scheduled.tiled = configure->tiled;
if (configure->fields & WLR_XDG_TOPLEVEL_CONFIGURE_BOUNDS) {
toplevel->scheduled.fields |= WLR_XDG_TOPLEVEL_CONFIGURE_BOUNDS;
toplevel->scheduled.bounds = configure->bounds;
}
if (configure->fields & WLR_XDG_TOPLEVEL_CONFIGURE_WM_CAPABILITIES) {
toplevel->scheduled.fields |= WLR_XDG_TOPLEVEL_CONFIGURE_WM_CAPABILITIES;
toplevel->scheduled.wm_capabilities = configure->wm_capabilities;
}
return wlr_xdg_surface_schedule_configure(toplevel->base);
}
uint32_t wlr_xdg_toplevel_set_size(struct wlr_xdg_toplevel *toplevel,
int32_t width, int32_t height) {
assert(width >= 0 && height >= 0);

Loading…
Cancel
Save