markdown preview: Add link tooltips (#10161)
Adds tooltips to the markdown preview, similar to how its done for `RichText` https://github.com/zed-industries/zed/assets/53836821/523519d4-e392-46ef-9fe0-6692871b317d Release Notes: - Added tooltips when hovering over links inside the markdown preview
This commit is contained in:
parent
dde87f6468
commit
5d88d9c0d7
2 changed files with 39 additions and 6 deletions
|
@ -13,7 +13,7 @@ use std::{
|
|||
sync::Arc,
|
||||
};
|
||||
use theme::{ActiveTheme, SyntaxTheme};
|
||||
use ui::{h_flex, v_flex, Checkbox, Selection};
|
||||
use ui::{h_flex, v_flex, Checkbox, LinkPreview, Selection};
|
||||
use workspace::Workspace;
|
||||
|
||||
pub struct RenderContext {
|
||||
|
@ -328,11 +328,26 @@ fn render_markdown_text(parsed: &ParsedMarkdownText, cx: &mut RenderContext) ->
|
|||
element_id,
|
||||
StyledText::new(parsed.contents.clone()).with_highlights(&cx.text_style, highlights),
|
||||
)
|
||||
.tooltip({
|
||||
let links = links.clone();
|
||||
let link_ranges = link_ranges.clone();
|
||||
move |idx, cx| {
|
||||
for (ix, range) in link_ranges.iter().enumerate() {
|
||||
if range.contains(&idx) {
|
||||
return Some(LinkPreview::new(&links[ix].to_string(), cx));
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
})
|
||||
.on_click(
|
||||
link_ranges,
|
||||
move |clicked_range_ix, window_cx| match &links[clicked_range_ix] {
|
||||
Link::Web { url } => window_cx.open_url(url),
|
||||
Link::Path { path } => {
|
||||
Link::Path {
|
||||
path,
|
||||
display_path: _,
|
||||
} => {
|
||||
if let Some(workspace) = &workspace {
|
||||
_ = workspace.update(window_cx, |workspace, cx| {
|
||||
workspace.open_abs_path(path.clone(), false, cx).detach();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue