Underline rich_text links when hovered
This commit is contained in:
parent
bf16d1ddcd
commit
ca31dcadd5
2 changed files with 11 additions and 6 deletions
|
|
@ -248,9 +248,7 @@ pub fn parse(
|
||||||
};
|
};
|
||||||
|
|
||||||
let span = if let Some(link) = link.as_ref() {
|
let span = if let Some(link) = link.as_ref() {
|
||||||
span.color(palette.primary)
|
span.color(palette.primary).link(link.clone())
|
||||||
.link(link.clone())
|
|
||||||
.underline(true)
|
|
||||||
} else {
|
} else {
|
||||||
span
|
span
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -237,7 +237,7 @@ where
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
defaults: &renderer::Style,
|
defaults: &renderer::Style,
|
||||||
layout: Layout<'_>,
|
layout: Layout<'_>,
|
||||||
_cursor: mouse::Cursor,
|
cursor: mouse::Cursor,
|
||||||
viewport: &Rectangle,
|
viewport: &Rectangle,
|
||||||
) {
|
) {
|
||||||
let state = tree
|
let state = tree
|
||||||
|
|
@ -246,8 +246,15 @@ where
|
||||||
|
|
||||||
let style = theme.style(&self.class);
|
let style = theme.style(&self.class);
|
||||||
|
|
||||||
|
let hovered_span = cursor
|
||||||
|
.position_in(layout.bounds())
|
||||||
|
.and_then(|position| state.paragraph.hit_span(position));
|
||||||
|
|
||||||
for (index, span) in self.spans.iter().enumerate() {
|
for (index, span) in self.spans.iter().enumerate() {
|
||||||
if span.highlight.is_some() || span.underline {
|
let is_hovered_link =
|
||||||
|
span.link.is_some() && Some(index) == hovered_span;
|
||||||
|
|
||||||
|
if span.highlight.is_some() || span.underline || is_hovered_link {
|
||||||
let translation = layout.position() - Point::ORIGIN;
|
let translation = layout.position() - Point::ORIGIN;
|
||||||
let regions = state.paragraph.span_bounds(index);
|
let regions = state.paragraph.span_bounds(index);
|
||||||
|
|
||||||
|
|
@ -277,7 +284,7 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if span.underline {
|
if span.underline || is_hovered_link {
|
||||||
let line_height = span
|
let line_height = span
|
||||||
.line_height
|
.line_height
|
||||||
.unwrap_or(self.line_height)
|
.unwrap_or(self.line_height)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue