Add dual-pane layout options (vertical split, separate sidebars/nav bars/status menu)#3734
Add dual-pane layout options (vertical split, separate sidebars/nav bars/status menu)#3734cdmdotnet wants to merge 2 commits intolinuxmint:masterfrom
Conversation
…idebars, separate nav bars) Three new preferences in Preferences > Behavior > Dual Pane: - "Show panes vertically (one above the other)" [dual-pane-vertical-split] Switches the split-view HPaned to a VPaned so panes stack top/bottom instead of side by side. - "Separate sidebar per pane" [dual-pane-separate-sidebar] Requires vertical split. Each pane gets its own Places/Tree sidebar, allowing the second pane's sidebar to track its own location without needing to change focus first. Sidebar type (Places/Tree) and visibility remain global toggles. - "Separate path bar / location entry per pane" [dual-pane-separate-nav-bar] Requires vertical split. Each pane embeds its own toolbar (path bar and location entry) above its tab strip. Toggle Location Entry, clicking the path bar to switch to location entry, and Go menu / bookmarks all operate on the focused pane only. "Always start in dual-pane view" is moved into the new Dual Pane section. Implementation: - GSettings schema: 3 new bool keys in org.nemo.preferences (default false) - Layout: pri_paned/sec_paned wrapper HPaneds hold sidebar+pane columns when separate-sidebar is active; torn down cleanly on pref change or split-view-off - Sidebar: NemoPlacesSidebar and FMTreeView accept an optional NemoWindowPane* to filter loading-uri signals to their own pane - Toolbar: nemo_window_pane_embed/detach_toolbar reparents the toolbar into/out of the pane widget for per-pane nav bar mode - CSS: .nemo-active-sidebar / .nemo-inactive-pane classes colour each sidebar to match its pane's active/inactive state - Path bar callbacks: right-click, middle-click, and location-entry toggle all route to pane->active_slot (not the window's active slot) - Destroy order: pane1 wrapper → sidebar2 → sidebar → panes (all paths) Tests: - test/test-dual-pane-schema.c: 9 GSettings unit tests verifying the three new keys exist with correct schema defaults and round-trip correctly; runs without a display or D-Bus session
… + separate sidebar)
Adds a full-width NemoStatusBar below each pane column (spanning
both the sidebar and content area). Each per-pane bar is locked
to its pane so its zoom and sidebar buttons operate on that pane only.
The places / tree toggle buttons swap the per-pane sidebar widget,
keeping each pane's sidebar type independent.
|
My screen isn't big enough for all this. |
I considered smaller screens, which is why this has preference toggles which are all disabled by default, so wouldn't impact any existing users in that situation, and can be turned off at any time. Like the existing dual pane feature. |
|
This does not build - have you even tested this? I'm not interested in having the burden for all of this code essentially placed on me, for a feature no one has ever asked for. |
|
Yes it does build. And yes I have tested this, rather extensively. That's not to say I haven't missed checking in some files. If you could give me something more to work with I could find out what you are experiencing then we could professionally work through what mistake I might have made in getting this across to you. Build console output at a minimum. |
|
I found the github build scripts and ran those manually and they reported a successful build as well - https://github.com/cdmdotnet/nemo/actions/runs/23117709943. Again, I'm happy to help as I think this feature is very helpful, but like any development, I need a little more to work with than "it doesn't build on my machine" |
You cannot access nemo-window's private struct from nemo-statusbar. |
|
Thanks for the feedback. I'll look into what I've done wrong here for my build to succeed and the PR not to. |
You built the master branch there. Failed build from this PR: I don't see how you could have built this locally and ran it. |
|
I'm a bit confused. I specified my feature branch when I triggered the build, though I don't know what the build itself does. I've also updated the release it created with deb packages I created locally... there's two, one renames a few things so I could do side by side testing without overwriting the pre-existing nemo. Have i mis-understood what the build scripts do? I went to actions, selected the "Build" action, went "Run workflow" I didn't select the option for SSH on failure ... should I have? |
|
I was one commit behind when I made the PR. I missed a check-in that had some tests, but appears to have had some other missed check-ins. Anyways. It now builds against the github action. I'll create a separate PR for that |
Dual-pane enhancements:
All options default to off, preserving existing behaviour when not enabled. New preferences exposed in a dedicated Dual Pane section of the Behaviour tab.
Details