fix(gpui): draw the tab context menu once — shadow no longer stacks per tab
`ContextMenuExt::context_menu()` wraps the host element and keys its element
state by a hardcoded "context-menu" id. The wrapper's id enters the
GlobalElementId stack *before* the wrapped row's own `("sidebar-tab", ix)`,
so every sidebar tab row resolved to the same state — the same
`Rc<RefCell<ContextMenuSharedState>>`. Opening one menu set `open = true` for
all rows, and each row then re-rendered the same PopupMenu entity at the same
anchor. The panel is opaque so the stack was invisible, but the popover shadow
is not: its alpha composited once per tab. That is the whole of "the more tabs,
the thicker the right-click shadow" — no packaging or config involvement.
The tab menu now uses the same carrier as the file tree: rows only record the
anchor and index, and a single `deferred(anchored(PopupMenu))` is drawn from
the workspace root, so the component's own popover shadow stays single-layer.
The menu is dropped when the TABS section folds, and skipped when its captured
index no longer exists.
Alongside it:
- CHANGELOG: 1.1.0 gains this fix and issue #38 (two notify wrappers wrapping
each other until Codex's config.toml reached 130MB); release date moves to
2026-08-18.
- docs/release-notes/v1.1.0.md: release notes in the 1.0.0 format, with PR
credits, reporter credits, and a pointer to the issue templates.
- README / THIRD-PARTY-NOTICES: GPUI and gpui-component are credited and
declared — both Apache-2.0, compiled as lightly patched forks.
- .gitignore: ignore the whole `.probe-*/` family instead of one name at a time.
This commit is contained in:
1 parent
95a79e7255
commit
0eddfaf2f1
7 files changed
+238
-37
No files matched your search
@@ -241,6 +241,16 @@ Windows/Linux paths, arrays, modules, and reload behavior.
|
||||
|
||||
Questions and feedback: [fickleheartedkeys@163.com](mailto:fickleheartedkeys@163.com)
|
||||
|
||||
### 🙏 Acknowledgements
|
||||
|
||||
Nebula's shell is built on **[GPUI](https://github.com/zed-industries/zed)** — the
|
||||
GPU-accelerated UI framework developed by the [Zed](https://zed.dev) team — together with
|
||||
**[gpui-component](https://github.com/longbridge/gpui-component)** from
|
||||
[Longbridge](https://github.com/longbridge), which supplies the widget library. Both are
|
||||
Apache-2.0 licensed and are used through lightly patched forks pinned in the workspace
|
||||
manifest. Thank you for releasing this work as open source — Nebula's interface would not
|
||||
look the way it does without it.
|
||||
|
||||
### 📜 License
|
||||
|
||||
Released under the [GNU General Public License v3.0](LICENSE).
|
||||
@@ -420,6 +430,15 @@ Nebula 内置 Lua 5.4,使用 `require 'nebula'` 与
|
||||
|
||||
问题与反馈:[fickleheartedkeys@163.com](mailto:fickleheartedkeys@163.com)
|
||||
|
||||
### 🙏 致谢
|
||||
|
||||
Nebula 的界面层构建在 **[GPUI](https://github.com/zed-industries/zed)** 之上——由
|
||||
[Zed](https://zed.dev) 团队开发的 GPU 加速 UI 框架——并使用
|
||||
[Longbridge](https://github.com/longbridge) 的
|
||||
**[gpui-component](https://github.com/longbridge/gpui-component)** 作为组件库。两者均以
|
||||
Apache-2.0 许可发布,Nebula 通过带少量补丁的 fork 使用,版本在 workspace 清单中精确锁定。
|
||||
感谢把这些工作开源——没有它,Nebula 现在的界面不会是这个样子。
|
||||
|
||||
### 📜 许可证
|
||||
|
||||
基于 [GNU 通用公共许可证 v3.0(GPL-3.0)](LICENSE) 发布。
|
||||
|
||||
Reference in new issue
Block a user