Skip to content

Replace emoji icons with VS Code codicons in menus#11

Merged
Robin-Reiche merged 1 commit into
Robin-Reiche:masterfrom
yukina3230:feat/codicon-menu-icons
Jun 15, 2026
Merged

Replace emoji icons with VS Code codicons in menus#11
Robin-Reiche merged 1 commit into
Robin-Reiche:masterfrom
yukina3230:feat/codicon-menu-icons

Conversation

@yukina3230

@yukina3230 yukina3230 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Context menus (column & row), the pin markers on headers/gutter, and dynamic labels were using emojis, which render inconsistently across platforms and caused misaligned icons and uneven spacing.

Switched to codicons (already loaded in the webview).

Added "Unfreeze all columns/rows (N)" to the context menu. It appears when multiple items are frozen, allowing users to clear the entire freeze set at once.

Before:
old_icon

After:
new_icon

Unfreeze all:
unfreeze

@Robin-Reiche Robin-Reiche left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, the icon work is genuinely an improvement 🙏 The emojis in the menus rendered inconsistently across platforms, ignored the theme and sat misaligned, exactly what you describe. Codicons fix all three: they use currentColor so they follow the menu and danger colors, they have consistent metrics, and the font is already bundled so there is no payload cost.

The core swap is correct and safe. I checked it properly: every glyph and the \eba0 codepoint exist in the bundled font, the display toggles were correctly moved from block to flex to match the new flex items, there is no XSS (the pinned row-index renderer only stringifies the numeric _origIndex), and exports are unaffected because the row-index column is filtered out there. The pinnedOrig regex still resolves because the codicon is a ::before and contributes no text.

I would like a bit of rework before merging though. Here is the honest reasoning 🤔

The main thing: the PR does two jobs. Alongside the icon swap it also ships new behavior. Unfreeze all columns (N) is a genuinely new action, and Unfreeze all rows (N) gets relocated so it now also appears in the body-row menu, not just on a pinned row, with its own separator-cleanup logic to support it. You did call it out in the description, so it is not hidden, but it does not fit under the title and it muddies the changelog and any future revert. I would prefer to split the unfreeze-all feature into its own PR so the icon change can stand on its own. Both are welcome, just separately 🙏

Smaller things, all in the icon part:

  • makeRowItem() is a nice helper, but the Freeze and Unfreeze row items still build their markup with raw innerHTML and an inline label instead of going through it. Because the label is not wrapped in a .row-ctx-label span there, those two items miss the flex gap spacing the others get, so they end up slightly misaligned. Routing them through makeRowItem fixes both the inconsistency and the spacing.
  • Two comments still describe the old 📌 emoji: the one above the pinnedOrig regex in delete-row-col.ts (it documents that very regex, so it is load-bearing) and the valueGetter comment in builder.ts (the marker moved to the cellRenderer). Worth a quick wording update so they stay accurate.
  • Tiny: the new ::before rule uses font-family: codicon unquoted while the @font-face uses "codicon". It resolves fine, just tidier to match.

None of this is about the icons themselves, those are good and I want them in. Happy to merge the icon change as soon as it is split out from the unfreeze-all feature and the helper and comments are tidied up.

@yukina3230

Copy link
Copy Markdown
Contributor Author

Thank you for the detailed feedback. I will address these changes and open a separate PR for the unfreeze feature.

@yukina3230

Copy link
Copy Markdown
Contributor Author

Hi @Robin-Reiche , I've updated this PR based on your feedback:

  • The unfreeze-all feature has been isolated and moved to PR Feat: unfreeze all #14.
  • The Freeze/Unfreeze items are now properly using the makeRowItem helper, solving the spacing issue.
  • The comments and CSS typography have been cleaned up as requested.

Please review it again when you have time. Thank you!

Robin-Reiche added a commit that referenced this pull request Jun 15, 2026
@Robin-Reiche Robin-Reiche merged commit 5ea5961 into Robin-Reiche:master Jun 15, 2026
@Robin-Reiche

Copy link
Copy Markdown
Owner

Thank you for this. The emoji icons always looked a little out of place, and moving the menus to Codicons makes the whole editor feel like one set. Merged and going out in v1.11.0.

Robin-Reiche added a commit that referenced this pull request Jun 15, 2026
@yukina3230 yukina3230 deleted the feat/codicon-menu-icons branch June 15, 2026 16:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants