Skip to content

Add an ItemId newtype to identify plot items - #264

Merged
emilk merged 1 commit into
mainfrom
emilk/item-id
Sep 18, 2026
Merged

emilk merged 1 commit into
mainfrom
emilk/item-id

Conversation

@emilk

@emilk emilk commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Plot items were keyed by egui::Id, a supposedly globally unique id. An item only ever has to be unique within its own plot, so this adds a dedicated ItemId newtype wrapping a hash.

Plot items used to be keyed by `egui::Id`, which is a globally unique id.
An item only ever has to be unique within the plot it belongs to, so this
introduces a dedicated `ItemId` for it, plus `ItemIdSet` and `ItemIdMap`
that skip rehashing an id that already is a high-entropy hash.

The builders keep the `id` name and now take `impl Hash`, so the common
`.id("my_line")` keeps compiling. It also frees `egui_plot` from `egui`'s
own id types in its public API.

`PlotItem::id`, `PlotResponse::hovered_plot_item`, `PlotMemory::hidden_items`,
`PlotMemory::hovered_legend_item` and `Legend::hidden_items` now use `ItemId`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

View snapshot changes at kitdiff

@emilk emilk added the include in changelog This change will be included in the changelog label Sep 18, 2026
@emilk emilk mentioned this pull request Sep 18, 2026
1 task
@emilk
emilk marked this pull request as ready for review September 18, 2026 08:54
@emilk
emilk merged commit 0d0d6dd into main Sep 18, 2026
11 of 12 checks passed
@emilk
emilk deleted the emilk/item-id branch September 18, 2026 08:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

include in changelog This change will be included in the changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant