@@ -89,6 +89,7 @@ typedef struct _MetaWaylandXdgSurfacePrivate
8989 struct wl_resource * resource ;
9090 MetaWaylandXdgShellClient * shell_client ;
9191 MetaRectangle geometry ;
92+ MetaRectangle unconstrained_geometry ;
9293
9394 guint configure_sent : 1 ;
9495 guint first_buffer_attached : 1 ;
@@ -807,7 +808,7 @@ meta_wayland_xdg_toplevel_post_apply_state (MetaWaylandSurfaceRole *surface_rol
807808 META_WAYLAND_SURFACE_ROLE_CLASS (meta_wayland_xdg_toplevel_parent_class );
808809 surface_role_class -> post_apply_state (surface_role , pending );
809810
810- if (!pending -> newly_attached )
811+ if (!surface -> buffer_ref . buffer )
811812 return ;
812813
813814 window_geometry = meta_wayland_xdg_surface_get_window_geometry (xdg_surface );
@@ -1533,6 +1534,7 @@ meta_wayland_xdg_surface_real_reset (MetaWaylandXdgSurface *xdg_surface)
15331534 priv -> first_buffer_attached = FALSE;
15341535 priv -> configure_sent = FALSE;
15351536 priv -> geometry = (MetaRectangle ) { 0 };
1537+ priv -> unconstrained_geometry = (MetaRectangle ) { 0 };
15361538 priv -> has_set_geometry = FALSE;
15371539}
15381540
@@ -1575,12 +1577,19 @@ meta_wayland_xdg_surface_post_apply_state (MetaWaylandSurfaceRole *surface_role
15751577
15761578 if (pending -> has_new_geometry )
15771579 {
1580+ priv -> unconstrained_geometry = pending -> new_geometry ;
15781581 meta_wayland_shell_surface_determine_geometry (shell_surface ,
15791582 & pending -> new_geometry ,
15801583 & priv -> geometry );
15811584 priv -> has_set_geometry = TRUE;
15821585 }
1583- else if (!priv -> has_set_geometry )
1586+ else if (priv -> has_set_geometry )
1587+ {
1588+ meta_wayland_shell_surface_determine_geometry (shell_surface ,
1589+ & priv -> unconstrained_geometry ,
1590+ & priv -> geometry );
1591+ }
1592+ else
15841593 {
15851594 MetaRectangle new_geometry = { 0 };
15861595
0 commit comments