shell: Use desired output when sending configure events when maximised
With shell_surface.set_maximised the caller can provide an output to maximise to or the default output will be used. With the corresponding configure we should use the dimensions from the chosen output not the output the surface was currently on. Similarly when calculating the position for the window in the map() function we should use the desired output again. There is no need to assign shsurf->output to es->output since that happens in the map() function later.
This commit is contained in:
parent
8f24156926
commit
31b6862eeb
10
src/shell.c
10
src/shell.c
@ -1358,12 +1358,12 @@ shell_surface_set_maximized(struct wl_client *client,
|
||||
shsurf->output = get_default_output(es->compositor);
|
||||
|
||||
shell = shell_surface_get_shell(shsurf);
|
||||
panel_height = get_output_panel_height(shell, es->output);
|
||||
panel_height = get_output_panel_height(shell, shsurf->output);
|
||||
edges = WL_SHELL_SURFACE_RESIZE_TOP|WL_SHELL_SURFACE_RESIZE_LEFT;
|
||||
|
||||
shsurf->client->send_configure(shsurf->surface, edges,
|
||||
es->output->current->width,
|
||||
es->output->current->height - panel_height);
|
||||
shsurf->output->current->width,
|
||||
shsurf->output->current->height - panel_height);
|
||||
|
||||
shsurf->next_type = SHELL_SURFACE_MAXIMIZED;
|
||||
}
|
||||
@ -2548,8 +2548,8 @@ map(struct desktop_shell *shell, struct weston_surface *surface,
|
||||
case SHELL_SURFACE_MAXIMIZED:
|
||||
/* use surface configure to set the geometry */
|
||||
panel_height = get_output_panel_height(shell,surface->output);
|
||||
weston_surface_set_position(surface, surface->output->x,
|
||||
surface->output->y + panel_height);
|
||||
weston_surface_set_position(surface, shsurf->output->x,
|
||||
shsurf->output->y + panel_height);
|
||||
break;
|
||||
case SHELL_SURFACE_POPUP:
|
||||
shell_map_popup(shsurf);
|
||||
|
Loading…
x
Reference in New Issue
Block a user