xdg-shell: fix maximizing in multi-head setup
authorMarek Chalupa <mchqwerty@gmail.com>
Mon, 1 Sep 2014 15:20:33 +0000 (17:20 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Wed, 10 Sep 2014 13:33:13 +0000 (16:33 +0300)
Set the right position of maximized window. Up until now we ignored
output's "position" and were using only the working area
of output which is in output-relative coordinates. This led to
showing the maximized window always on the first output.

This, along with the previous patch, fixes
https://bugs.freedesktop.org/show_bug.cgi?id=82967

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
desktop-shell/shell.c

index 2b7b247..3cc5733 100644 (file)
@@ -5291,15 +5291,16 @@ set_maximized_position(struct desktop_shell *shell,
 {
        int32_t surf_x, surf_y;
        pixman_rectangle32_t area;
+       pixman_box32_t *e;
 
-       /* use surface configure to set the geometry */
        get_output_work_area(shell, shsurf->output, &area);
        surface_subsurfaces_boundingbox(shsurf->surface,
                                        &surf_x, &surf_y, NULL, NULL);
+       e = pixman_region32_extents(&shsurf->output->region);
 
        weston_view_set_position(shsurf->view,
-                                area.x - surf_x,
-                                area.y - surf_y);
+                                e->x1 + area.x - surf_x,
+                                e->y1 + area.y - surf_y);
 }
 
 static void