@ -32,7 +32,7 @@
struct render_data {
pixman_region32_t * damage ;
float alpha ;
struct sway_container * container ;
struct wlr_box * clip_box ;
} ;
/**
@ -157,10 +157,10 @@ static void render_surface_iterator(struct sway_output *output, struct sway_view
wlr_output - > transform_matrix ) ;
struct wlr_box dst_box = * _box ;
struct sway_container * container = data - > container ;
if ( c ontainer ! = NULL ) {
dst_box . width = fmin ( dst_box . width , c ontainer- > current . content_ width) ;
dst_box . height = fmin ( dst_box . height , c ontainer- > current . content_ height) ;
struct wlr_box * clip_box = data - > clip_box ;
if ( c lip_box ! = NULL ) {
dst_box . width = fmin ( dst_box . width , c lip_box- > width) ;
dst_box . height = fmin ( dst_box . height , c lip_box- > height) ;
}
scale_box ( & dst_box , wlr_output - > scale ) ;
@ -262,8 +262,13 @@ static void render_view_toplevels(struct sway_view *view,
. damage = damage ,
. alpha = alpha ,
} ;
struct wlr_box clip_box ;
if ( ! container_is_current_floating ( view - > container ) ) {
data . container = view - > container ;
// As we pass the geometry offsets to the surface iterator, we will
// need to account for the offsets in the clip dimensions.
clip_box . width = view - > container - > current . content_width + view - > geometry . x ;
clip_box . height = view - > container - > current . content_height + view - > geometry . y ;
data . clip_box = & clip_box ;
}
// Render all toplevels without descending into popups
double ox = view - > container - > surface_x -
@ -329,10 +334,10 @@ static void render_saved_view(struct sway_view *view,
if ( ! floating ) {
dst_box . width = fmin ( dst_box . width ,
view - > container - > current . content_width -
( saved_buf - > x - view - > container - > current . content_x ) ) ;
( saved_buf - > x - view - > container - > current . content_x ) + view - > saved_geometry . x ) ;
dst_box . height = fmin ( dst_box . height ,
view - > container - > current . content_height -
( saved_buf - > y - view - > container - > current . content_y ) ) ;
( saved_buf - > y - view - > container - > current . content_y ) + view - > saved_geometry . y ) ;
}
scale_box ( & dst_box , wlr_output - > scale ) ;