Fix links and text selection in horizontal_wrapped layout (#6905)
* Closes <https://github.com/emilk/egui/issues/6904> * [x] I have followed the instructions in the PR template This was broken in https://github.com/emilk/egui/pull/5411. Not sure if this is the best fix or if `PlacedRow::rect` should be updated, but I think it makes sense that PlacedRow::rect ignores leading space.
This commit is contained in:
parent
71e0b0859c
commit
5bb20f511e
|
|
@ -45,7 +45,7 @@ pub fn update_accesskit_for_text_widget(
|
||||||
let row_id = parent_id.with(row_index);
|
let row_id = parent_id.with(row_index);
|
||||||
ctx.accesskit_node_builder(row_id, |builder| {
|
ctx.accesskit_node_builder(row_id, |builder| {
|
||||||
builder.set_role(accesskit::Role::TextRun);
|
builder.set_role(accesskit::Role::TextRun);
|
||||||
let rect = global_from_galley * row.rect();
|
let rect = global_from_galley * row.rect_without_leading_space();
|
||||||
builder.set_bounds(accesskit::Rect {
|
builder.set_bounds(accesskit::Rect {
|
||||||
x0: rect.min.x.into(),
|
x0: rect.min.x.into(),
|
||||||
y0: rect.min.y.into(),
|
y0: rect.min.y.into(),
|
||||||
|
|
|
||||||
|
|
@ -216,7 +216,9 @@ impl Label {
|
||||||
let pos = pos2(ui.max_rect().left(), ui.cursor().top());
|
let pos = pos2(ui.max_rect().left(), ui.cursor().top());
|
||||||
assert!(!galley.rows.is_empty(), "Galleys are never empty");
|
assert!(!galley.rows.is_empty(), "Galleys are never empty");
|
||||||
// collect a response from many rows:
|
// collect a response from many rows:
|
||||||
let rect = galley.rows[0].rect().translate(pos.to_vec2());
|
let rect = galley.rows[0]
|
||||||
|
.rect_without_leading_space()
|
||||||
|
.translate(pos.to_vec2());
|
||||||
let mut response = ui.allocate_rect(rect, sense);
|
let mut response = ui.allocate_rect(rect, sense);
|
||||||
for placed_row in galley.rows.iter().skip(1) {
|
for placed_row in galley.rows.iter().skip(1) {
|
||||||
let rect = placed_row.rect().translate(pos.to_vec2());
|
let rect = placed_row.rect().translate(pos.to_vec2());
|
||||||
|
|
|
||||||
|
|
@ -576,10 +576,18 @@ pub struct PlacedRow {
|
||||||
|
|
||||||
impl PlacedRow {
|
impl PlacedRow {
|
||||||
/// Logical bounding rectangle on font heights etc.
|
/// Logical bounding rectangle on font heights etc.
|
||||||
/// Use this when drawing a selection or similar!
|
///
|
||||||
|
/// This ignores / includes the `LayoutSection::leading_space`.
|
||||||
pub fn rect(&self) -> Rect {
|
pub fn rect(&self) -> Rect {
|
||||||
Rect::from_min_size(self.pos, self.row.size)
|
Rect::from_min_size(self.pos, self.row.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Same as [`Self::rect`] but excluding the `LayoutSection::leading_space`.
|
||||||
|
pub fn rect_without_leading_space(&self) -> Rect {
|
||||||
|
let x = self.glyphs.first().map_or(self.pos.x, |g| g.pos.x);
|
||||||
|
let size_x = self.size.x - x;
|
||||||
|
Rect::from_min_size(Pos2::new(x, self.pos.y), Vec2::new(size_x, self.size.y))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::ops::Deref for PlacedRow {
|
impl std::ops::Deref for PlacedRow {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue