iris: keep text overflow masks horizontal
This commit is contained in:
1 parent
ab6d3fcdc8
commit
f1baa87a9a
1 file changed
+20
-1
+20
-1
@@ -354,11 +354,12 @@ impl TextView {
|
||||
} else {
|
||||
(self.overflow.content_end - self.overflow.content_start).max(0.0)
|
||||
};
|
||||
let mask = vec2(content_width, self.overflow.viewport.y)
|
||||
let horizontal_mask = vec2(content_width, self.overflow.viewport.y)
|
||||
.align(Align::TOP_LEFT)
|
||||
.offset(vec2(self.overflow.content_start, 0.0))
|
||||
.within(&viewport)
|
||||
.within(&painter.region());
|
||||
let mask = UiRegion::new(horizontal_mask.x, UiSpan::FULL);
|
||||
painter.set_mask(mask);
|
||||
let origin = tex
|
||||
.size
|
||||
@@ -656,6 +657,24 @@ mod tests {
|
||||
assert_eq!(rsc.ui.widgets[text].view.overflow.trailing_marker, 0.0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn overflow_masks_only_the_horizontal_axis() {
|
||||
let mut rsc = TestRsc { ui: Ui::default() };
|
||||
let text = wtext("glyphs jumping")
|
||||
.overflow(TextOverflow::Hidden)
|
||||
.size(18)
|
||||
.add(&mut rsc);
|
||||
let root = text.width(abs(50)).add_strong(&mut rsc).any();
|
||||
let mut render = UiRenderState::new();
|
||||
render.resize((800.0, 600.0));
|
||||
render.update(&root, &mut rsc);
|
||||
|
||||
let mask = rsc.ui.masks[render.active[&text.id()].own_mask.idx()];
|
||||
let region = render.primitives.instance(mask.primitive).region;
|
||||
assert_eq!(region.y, UiSpan::FULL);
|
||||
assert_ne!(region.x, UiSpan::FULL);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn selecting_an_ellipsis_selects_the_omitted_source_text() {
|
||||
let mut rsc = TestRsc { ui: Ui::default() };
|
||||
|
||||
Reference in new issue
Block a user