-
Notifications
You must be signed in to change notification settings - Fork 65
Tabbed panels (WIP, made with AI, testing volunteers wanted) #168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
That’s amazing - I looked at your pull request and my jaw just dropped. As Jakub Červený said, it’s both brilliant and a little scary at the same time. I wanted to ask: what share of the work was done by AI, and how much time did you personally put into it? Roughly how many hours of work does it represent? Did you study Salamander’s code base beforehand, or did you leave most of the design decisions up to the AI? I haven’t checked the pull request yet, but I’ll definitely take a closer look. GitHub Copilot apparently has some support for PR reviews - we should probably start using that. I’ll also write a post about the status of comments translation into English; ideally, we should land this PR only once the relevant modules have been translated - I’ll explain the reasons. Either way, huge thanks - fantastic work! |
|
That’s absolutely remarkable.. |
|
The feature still needs testing and tweaking as I could misunderstood the original logic when approving/adjusting the prompts. So far I've fixed what I noticed while using it, I'm also thinking about adding the possibility of a custom tab name and color (for better distinction, like a prefix in the application header)... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements tabbed panels functionality for Open Salamander, a feature that has been requested since 2012. The implementation allows users to have multiple tabs in each panel (left and right), with support for creating, closing, navigating, and reordering tabs.
- Adds complete tabbed panel infrastructure with tab control windows and tab management
- Implements tab-specific working directory histories and configuration persistence
- Adds comprehensive UI integration including menu items, toolbar buttons, and keyboard shortcuts
Reviewed Changes
Copilot reviewed 37 out of 38 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tabwnd.h | New tab window class definition with tab management capabilities |
| src/tabwnd.cpp | Complete tab window implementation with drag-and-drop reordering |
| src/mainwnd.h | Extended main window to support tab collections and management |
| src/mainwnd3.cpp | Core tab management logic and UI event handling |
| src/fileswnd.h | Added panel side enumeration and work directory history support |
| src/cfgdlg.h | Configuration structures for tab functionality and history scope |
| src/resource.rh2 | New command IDs and control IDs for tab operations |
| src/salamand.rc | Keyboard shortcuts for tab navigation commands |
| Multiple UI files | Menu items, toolbar buttons, and configuration dialogs for tabs |
Comments suppressed due to low confidence (4)
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
I hope I'm not violating any licensing terms: https://github.com/KRtkovo-eu-AI/salamander/releases/tag/tabbed_panels_poc02 |
|
Is it intentional that the first tab cannot be dragged with the mouse to a different position? Would it be possible to provide a clear visual indication during the drag operation to show where the tab will land once the mouse is released? Also, if I click on a tab with the middle mouse button, a focus frame appears on it, and if I then press the left or right arrow key on the keyboard, it switches to the adjacent tab, but the focus returns to the panel. Is this intentional? |
Yes, the first tab is "default", can't be removed or dragged. Panels from these tabs will remain in the application, even after disabling the "tabbed panels" option, while the others are discarded.
Definitely, I want this too as now it's really not intuitive.
No, this is not intentional, focus moving is not working as expected. I need to craft a prompt for both issues. |
|
If I open the Windows Registry (plugin path) or, for example, a ZIP archive in the first tab, then switch to the second tab (which contains, for instance, a local disk), unload the Registry Editor or ZIP plugin in the Plugins Manager, and then click back on the first tab, Salamander crashes. |
|
If I open, for example, 20 tabs "D:" and create a directory using F7, the wait cursor starts blinking and the newly created directory only appears in the panel after one or two seconds. Even if a refresh is performed for each panel, given the performance of today’s computers, this delay still surprises me. |
|
If I start Salamander, add a new tab, close it, and then create a directory, it doesn’t get displayed. Apparently, the automatic refresh stops working. |
|
I start Salamander, select the Windows Registry item in one tab, switch to another tab, and then close Salamander. It crashes. |
|
@janrysavy I suggest using the Issues in my repository https://github.com/KRtkovo-eu-AI/salamander/issues to make it clearer, as I expect the list of issues to grow even more. |
|
@KRtekTM i think a separate PR just for Unicode would be better for @janrysavy to track don't you think? |
Yeah, I'll split it in two parts. I had no idea how deep that rabbit hole is 😅🤣 |
|
I have tested the latest POC05 version and it is extremely slow on start. It takes 10+seconds to start OS 5.0. It also shows a plugin error, which could be probably uninstalled but I would expect that during conversion from AS 4.0 that would be done automatically. |
Change version
* Allow duplicating default tab via double-click * Reduce tab bar flicker with buffered painting * Allow dragging single non-default tab across panels
|
FIY: I haven't stopped developing experimental features for the Samandarin fork, I just have less free time now. In many attempts, I haven't been able to refactor the Codex code and solve what causes slow application startups - I either have to choose a different approach (because I don't think I've made irreversible changes there), or wait some more time for development in the gpt-5-codex model and for increasing the length of the tasks performed (in the latest versions, Codex is "lobotomized", so it actively prevents tasks longer than 30 minutes, while from my own experience in developing this feature I know that it can already handle 2-hour tasks). |
No worries, I know it can take some time. I my self, suffer from lack of time at the moment. All the best! |





Since 2012, requests for tabbed panels have been appearing on the Altap forum. I've been thinking lately that I would also like a similar feature.
At the same time, I wanted to try OpenAI Codex on a larger project. Long story short, here are the tabbed panels...