xwayland: Make Xwayland rootful resizable
By default, the Xwayland window in rootful mode was not resizable. Make the Xwayland window resizable using libdecor in rootful mode. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
parent
63c0a2dfa2
commit
516f1b96cd
|
@ -621,22 +621,28 @@ handle_libdecor_configure(struct libdecor_frame *frame,
|
||||||
{
|
{
|
||||||
struct xwl_window *xwl_window = data;
|
struct xwl_window *xwl_window = data;
|
||||||
struct xwl_screen *xwl_screen = xwl_window->xwl_screen;
|
struct xwl_screen *xwl_screen = xwl_window->xwl_screen;
|
||||||
|
struct xwl_output *xwl_output;
|
||||||
struct libdecor_state *state;
|
struct libdecor_state *state;
|
||||||
|
RRModePtr mode;
|
||||||
|
int width, height;
|
||||||
|
|
||||||
state = libdecor_state_new(xwl_screen->width, xwl_screen->height);
|
if (!libdecor_configuration_get_content_size(configuration, frame, &width, &height)) {
|
||||||
|
width = xwl_screen->width;
|
||||||
|
height = xwl_screen->height;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (xwl_screen->width != width || xwl_screen->height != height) {
|
||||||
|
xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen);
|
||||||
|
if (xwl_randr_add_modes_fixed(xwl_output, width, height)) {
|
||||||
|
mode = xwl_output_find_mode(xwl_output, width, height);
|
||||||
|
xwl_output_set_mode_fixed(xwl_output, mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
state = libdecor_state_new(width, height);
|
||||||
libdecor_frame_commit(frame, state, configuration);
|
libdecor_frame_commit(frame, state, configuration);
|
||||||
libdecor_state_free(state);
|
libdecor_state_free(state);
|
||||||
|
|
||||||
if (libdecor_frame_has_capability(frame, LIBDECOR_ACTION_RESIZE))
|
|
||||||
libdecor_frame_unset_capabilities(frame, LIBDECOR_ACTION_RESIZE);
|
|
||||||
if (libdecor_frame_has_capability(frame, LIBDECOR_ACTION_FULLSCREEN))
|
|
||||||
libdecor_frame_unset_capabilities(frame, LIBDECOR_ACTION_FULLSCREEN);
|
|
||||||
|
|
||||||
/* FIXME:
|
|
||||||
* We're not xdg-shell compliant here, we are supposed to adjust to
|
|
||||||
* the given configure size.
|
|
||||||
*/
|
|
||||||
|
|
||||||
wl_surface_commit(xwl_window->surface);
|
wl_surface_commit(xwl_window->surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue