Skip to content

Commit 5a09694

Browse files
committed
Overflow::Hidden doesn't work correctly with scale_factor_override (#3854)
# Objective Overflow::Hidden doesn't work correctly with scale_factor_override. If you run the Bevy UI example with scale_factor_override 3 you'll see half clipped text around the edges of the scrolling listbox. The problem seems to be that the corners of the node are transformed before the amount of clipping required is calculated. But then that transformed clip is compared to the original untransformed size of the node rect to see if it should be culled or not. With a higher scale factor the relative size of the untransformed node rect is going to be really big, so the overflow isn't culled. # Solution Multiply the size of the node rect by extracted_uinode.transform before the cull test.
1 parent f969c62 commit 5a09694

File tree

1 file changed

+4
-2
lines changed
  • crates/bevy_ui/src/render

1 file changed

+4
-2
lines changed

crates/bevy_ui/src/render/mod.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,9 +438,11 @@ pub fn prepare_uinodes(
438438
positions[3] + positions_diff[3].extend(0.),
439439
];
440440

441+
let transformed_rect_size = extracted_uinode.transform.transform_vector3(rect_size);
442+
441443
// Cull nodes that are completely clipped
442-
if positions_diff[0].x - positions_diff[1].x >= rect_size.x
443-
|| positions_diff[1].y - positions_diff[2].y >= rect_size.y
444+
if positions_diff[0].x - positions_diff[1].x >= transformed_rect_size.x
445+
|| positions_diff[1].y - positions_diff[2].y >= transformed_rect_size.y
444446
{
445447
continue;
446448
}

0 commit comments

Comments
 (0)