Skip to content

Commit

Permalink
Overflow::Hidden doesn't work correctly with scale_factor_override (#…
Browse files Browse the repository at this point in the history
…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.
  • Loading branch information
ickshonpe committed Jun 12, 2022
1 parent f969c62 commit 5a09694
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions crates/bevy_ui/src/render/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -438,9 +438,11 @@ pub fn prepare_uinodes(
positions[3] + positions_diff[3].extend(0.),
];

let transformed_rect_size = extracted_uinode.transform.transform_vector3(rect_size);

// Cull nodes that are completely clipped
if positions_diff[0].x - positions_diff[1].x >= rect_size.x
|| positions_diff[1].y - positions_diff[2].y >= rect_size.y
if positions_diff[0].x - positions_diff[1].x >= transformed_rect_size.x
|| positions_diff[1].y - positions_diff[2].y >= transformed_rect_size.y
{
continue;
}
Expand Down

0 comments on commit 5a09694

Please sign in to comment.