xwayland: Set decoration margin for xwayland windows
This commit is contained in:
parent
052ef4e7bc
commit
e5c1ae9368
@ -2052,6 +2052,16 @@ set_title(struct shell_surface *shsurf, const char *title)
|
||||
shsurf->title = strdup(title);
|
||||
}
|
||||
|
||||
static void
|
||||
set_margin(struct shell_surface *shsurf,
|
||||
int32_t left, int32_t right, int32_t top, int32_t bottom)
|
||||
{
|
||||
shsurf->margin.left = left;
|
||||
shsurf->margin.right = right;
|
||||
shsurf->margin.top = top;
|
||||
shsurf->margin.bottom = bottom;
|
||||
}
|
||||
|
||||
static void
|
||||
shell_surface_set_title(struct wl_client *client,
|
||||
struct wl_resource *resource, const char *title)
|
||||
@ -3349,10 +3359,7 @@ xdg_surface_set_margin(struct wl_client *client,
|
||||
{
|
||||
struct shell_surface *shsurf = wl_resource_get_user_data(resource);
|
||||
|
||||
shsurf->margin.left = left;
|
||||
shsurf->margin.right = right;
|
||||
shsurf->margin.top = top;
|
||||
shsurf->margin.bottom = bottom;
|
||||
set_margin(shsurf, left, right, top, bottom);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -6112,6 +6119,7 @@ module_init(struct weston_compositor *ec,
|
||||
ec->shell_interface.move = shell_interface_move;
|
||||
ec->shell_interface.resize = surface_resize;
|
||||
ec->shell_interface.set_title = set_title;
|
||||
ec->shell_interface.set_margin = set_margin;
|
||||
|
||||
weston_layer_init(&shell->fullscreen_layer, &ec->cursor_layer.link);
|
||||
weston_layer_init(&shell->panel_layer, &shell->fullscreen_layer.link);
|
||||
|
@ -111,7 +111,9 @@ struct weston_shell_interface {
|
||||
struct weston_seat *ws, uint32_t edges);
|
||||
void (*set_title)(struct shell_surface *shsurf,
|
||||
const char *title);
|
||||
|
||||
void (*set_margin)(struct shell_surface *shsurf,
|
||||
int32_t left, int32_t right,
|
||||
int32_t top, int32_t bottom);
|
||||
};
|
||||
|
||||
struct weston_animation {
|
||||
|
@ -944,7 +944,8 @@ weston_wm_window_draw_decoration(void *data)
|
||||
cairo_t *cr;
|
||||
int x, y, width, height;
|
||||
int32_t input_x, input_y, input_w, input_h;
|
||||
|
||||
struct weston_shell_interface *shell_interface =
|
||||
&wm->server->compositor->shell_interface;
|
||||
uint32_t flags = 0;
|
||||
|
||||
weston_wm_window_read_properties(window);
|
||||
@ -1006,6 +1007,12 @@ weston_wm_window_draw_decoration(void *data)
|
||||
|
||||
pixman_region32_init_rect(&window->surface->pending.input,
|
||||
input_x, input_y, input_w, input_h);
|
||||
|
||||
shell_interface->set_margin(window->shsurf,
|
||||
input_x,
|
||||
width - input_w - input_x,
|
||||
input_y,
|
||||
height - input_h - input_y);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user