Fix sidebar, history, camera, icons, and scanner issues #1
Loading…
Reference in a new issue
No description provided.
Delete branch "code-review-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Addresses a batch of behavioral/parity gaps found reviewing the port
against the original neofsn. Builds clean; verified headless and on a real
Wayland display.
Sidebar — was frozen at the initial scan depth and synced only one way:
fetchMore via a shallow depth-1 scan), driven by a new
FileSystemNode::childrenLoaded flag, so the tree reaches any depth.
BrowserModel::indexForPath. Sidebar.qml now expands ancestors and scrolls
the item selected in the 3D scene into view, deduped so hover noise
doesn't re-scroll.
History / Back — the back stack was append-only and mutated before a guard
that could no-op:
via truncate-or-push: returning to a folder already in the stack
(Back / breadcrumb / back-tile / reload) truncates instead of appending,
so it can't grow unboundedly. goBack/reload no longer pre-mutate.
wins) instead of being silently dropped.
Fly camera:
keys, ~zero velocity) and restarts on input / flyTo, instead of waking
60x/s forever.
forwardVector) instead of eulerRotation, removing Euler-order ambiguity at
steep pitch; Scene3D.qml binds rotation.
mouse.
Texture provider / icons:
thread-safe and requestImage runs on a worker thread) and cached by
name+size.
(specific → category-generic → octet-stream/unknown via hasThemeIcon;
"application" folds straight to octet-stream since Breeze has no
application-x-generic). Fixed the config glyph (wrong DOS-exe icon →
preferences-system).
Scanner — no longer follows symlinked directories, and tracks canonical
paths in a visited-set to stop self-referential link cycles from
duplicating subtrees; symlinks are still listed as leaf entries.
Metadata HUD — fileInfo now counts a directory's items from the
already-scanned tree (findNode) instead of QDir::entryInfoList on the GUI
thread, falling back to a live read only when the node isn't scanned. No
more UI stalls hovering large / network dirs.
Platform — documented that kfsn is Linux/KDE-only by design (macOS stays on
neofsn) in README and CMakeLists; KF6 is already a hard find_package.
KDE-session style fix — force the Basic QtQuick Controls style
(QT_QUICK_CONTROLS_STYLE=Basic) in main(). All QML already imports
Controls.Basic, but under a KDE session the default style is Breeze, and the
QtQuick.Dialogs FolderDialog fallback loaded it, spamming
ButtonBackground.qml "Value is null" TypeErrors. No visible change; native
dialogs are unaffected.