View: Chrome-style project tab groups + session persistence - #1047
Open
dhingora-amd wants to merge 4 commits into
Open
dhingora-amd wants to merge 4 commits into
dhingora-amd wants to merge 4 commits into
Conversation
Introduce a "Project" as a named, colored, collapsible group of tabs
(Chrome tab-group style), and rename the per-tab unit to ProjectItem.
- Rename per-tab Project -> ProjectItem (+ the ProjectItemSetting
family); rocprofvis_project.{h,cpp} -> rocprofvis_project_item.{h,cpp}.
- Add Project (rocprofvis_project.{h,cpp}): an ordered group of
ProjectItems with a name, color, and remembered closed items.
- Replace the ImGui tab bar with a custom tab strip: inline group chips,
collapse/expand, drag-to-reorder tabs, and dragging a whole group via
its chip (collapse-on-drag) with a floating drag ghost.
- Group management via tab and chip right-click menus and a
File > Projects submenu: create / add / move / remove / ungroup,
rename, recolor, reopen closed items, close group; auto-group when
multiple files are opened together.
- A .rpv is always a project now. Saving embeds each item's full
per-view settings (track order/heights, bookmarks, annotations), and
Save / Save As are unified to operate on the whole project. Old
single-item .rpv files still parse and open as a one-tab project.
- Reuse SettingsManager::GetColorWheel() for group colors (theme-aware)
instead of a duplicate palette.
Snapshot the whole workspace (all tab groups + ungrouped tabs, each with its full per-view settings) to <config>/last_session.json on graceful shutdown, and reopen it on the next plain launch (no file argument). Missing traces are skipped silently. Factor the per-item open path out of OpenProjectGroupFile into a shared OpenItemFromSettings helper reused by both the project loader and session restore.
Drop comments that restate the code or duplicate the header docs, and condense the rest to one line.
dhingora-amd
requested review from
a team,
Sajeeth-Wimalasuriyan,
amokiche-amd,
drchen-amd and
tomk-amd
as code owners
September 10, 2026 17:19
| } | ||
|
|
||
| void | ||
| AppWindow::RestoreSession() |
Comment on lines
+148
to
+150
| /* | ||
| * Writes the item settings into m_project_file_path; | ||
| */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Working with several traces at once meant a flat row of unrelated tabs with
no way to organize them, and nothing was remembered between runs. This adds
Chrome-style tab groups (called projects) and restores your open
workspace on the next launch.
Technical Details
Project→ProjectItem(
rocprofvis_project_item.*); newProjectclass is a named, colored,ordered tab group (
rocprofvis_project.*).TabContainernow hand-draws tabs (replacing ImGui'stab bar) to support group chips (click to collapse/expand), tinted/underlined
members, drag-to-reorder, and dragging a whole group as a unit.
tab & chip right-click menus and the
File > Projectssubmenu; openingmultiple files together auto-groups them.
.rpvis now always a project — it embeds each item's fullview settings (track order/heights, bookmarks, annotations). Old single-item
.rpvfiles still load (as a one-tab project). Unified scope-awareSave/Save As.<config>/last_session.jsonon shutdown and reopened on a plain launch(no file arg); missing traces are skipped silently.
.agents/UI.mdupdated for the rename, the new group model, andthe custom strip.