# markdown: Make linked images clickable \(\#59525\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/7d545c0baeff67d3427e53cc4f382eeb967e4119)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 7d545c0baeff67d3427e53cc4f382eeb967e4119

Requested commit: 7d545c0baeff67d3427e53cc4f382eeb967e4119

Commit: 7d545c0baeff67d3427e53cc4f382eeb967e4119

Tree: 263f1f1f7f2db9556320a5d53e8c35dce4fa334c

Author: Warya Wayne

Committer: GitHub

## Message

```
markdown: Make linked images clickable (#59525)

# Objective

Make images nested inside markdown links (e.g., README badges)
clickable, so they behave like normal markdown links.

Previously, linked images rendered correctly but were not interactive in
markdown previews: they did not show a pointer cursor, could not be
clicked to open their target URL, and did not expose link actions
through the context menu.

## Solution

Changed the `MarkdownElement` to detect when an `<img>` tag is inside a
`<a>` tag during rendering. When a linked image is rendered:

- The wrapper `div` gets a `cursor_pointer` style and an `on_click`
handler that opens the link URL (or delegates to the `on_url_click`
callback if set).
- The wrapper also captures right-click events to populate the context
menu with "Copy Link" via `capture_for_context_menu`.
- The `on_url_click` closure type was changed from `Box<dyn Fn>` to
`Rc<dyn Fn>` to allow cloning across multiple handlers.
- When a linked image fails to load, the fallback element's `on_click`
now calls `cx.stop_propagation()` to prevent the event from bubbling to
the parent link wrapper and opening the URL twice.

The feature is gated behind `!self.style.prevent_mouse_interaction` so
it respects existing interaction-prevention settings.

## Testing

- `cargo test -p markdown`: 95 tests passed.
- Manually verified in markdown preview that badge/image links open
correctly and right-click shows "Copy Link".
- Verified existing markdown tests continue to pass.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- Fixed images inside markdown links not being clickable.


https://github.com/user-attachments/assets/df2a8d8f-b002-47f9-b139-815ee713700b

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
```

## Parents

- [d132afe9fc440dc6822d6cba7ee34fa1d71056de](https://git.cafe/gitcafe/zed/commit/d132afe9fc440dc6822d6cba7ee34fa1d71056de?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/7d545c0baeff67d3427e53cc4f382eeb967e4119?format=markdown)
