@ -2127,6 +2127,12 @@ shell_surface_calculate_layer_link (struct shell_surface *shsurf)
struct weston_view * parent ;
struct weston_view * parent ;
switch ( shsurf - > type ) {
switch ( shsurf - > type ) {
case SHELL_SURFACE_XWAYLAND :
return & shsurf - > shell - > fullscreen_layer . view_list ;
case SHELL_SURFACE_NONE :
return NULL ;
case SHELL_SURFACE_POPUP :
case SHELL_SURFACE_POPUP :
case SHELL_SURFACE_TOPLEVEL :
case SHELL_SURFACE_TOPLEVEL :
if ( shsurf - > state . fullscreen & & ! shsurf - > state . lowered ) {
if ( shsurf - > state . fullscreen & & ! shsurf - > state . lowered ) {
@ -2142,22 +2148,15 @@ shell_surface_calculate_layer_link (struct shell_surface *shsurf)
if ( parent )
if ( parent )
return parent - > layer_link . prev ;
return parent - > layer_link . prev ;
}
}
break ;
case SHELL_SURFACE_XWAYLAND :
/* Move the surface to a normal workspace layer so that surfaces
return & shsurf - > shell - > fullscreen_layer . view_list ;
* which were previously fullscreen or transient are no longer
* rendered on top . */
case SHELL_SURFACE_NONE :
ws = get_current_workspace ( shsurf - > shell ) ;
default :
return & ws - > layer . view_list ;
/* Go to the fallback, below. */
break ;
}
}
/* Move the surface to a normal workspace layer so that surfaces
assert ( 0 & & " Unknown shell surface type " ) ;
* which were previously fullscreen or transient are no longer
* rendered on top . */
ws = get_current_workspace ( shsurf - > shell ) ;
return & ws - > layer . view_list ;
}
}
static void
static void
@ -2198,6 +2197,8 @@ shell_surface_update_layer(struct shell_surface *shsurf)
new_layer_link = shell_surface_calculate_layer_link ( shsurf ) ;
new_layer_link = shell_surface_calculate_layer_link ( shsurf ) ;
if ( new_layer_link = = NULL )
return ;
if ( new_layer_link = = & shsurf - > view - > layer_link )
if ( new_layer_link = = & shsurf - > view - > layer_link )
return ;
return ;