-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
feat(FileStatusList
): Use TreeView
#12116
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
Conversation
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.
A few comments, mostly about functionality.
Reviewing together with #12115
I meant a separate menu on the top level, as appearance
I consider a changed submodule as a changed file.
Overlay in general would be good for these icons. The variants (both changed etc) need to be changed for dark mode anyway. |
3115a1a
to
c9d1c97
Compare
c9d1c97
to
bc0783c
Compare
Dark mode adjusted icons for FileStatusList Note: * Only that only Modified is changed, not added/removed/copied/renamed, pending feedback * Icons are amodified for dark mode, will likely require separate light/dark mode * Colors added to separate B (blue-violet), A (yellow) and same (green) (unequal was red already). Should probably be applied to light icons too. Implementation of dual icons are pending update of FileStatusList in gitextensions#12116
Dark mode adjusted icons for FileStatusList Note: * Only that only Modified is changed, not added/removed/copied/renamed, pending feedback * Icons are modified for dark mode, will maybe need separate light/dark mode Implementation of dual icons are pending update of FileStatusList in gitextensions#12116 * Colors added to separate B (blue-violet), A (yellow) and same (green) (unequal was red already). Should probably be applied to light icons too, if they are separate.
669f9e0
to
c52fb55
Compare
A few comments on this PR as it is now: Questions:
For future PRs?
|
Thank you for the detailed feedback. I am aware of the TODOs.
Tooltips are automatically provided - if
"Sort by status" is a TODO yet and should yield the same ordering as before. New subgroups or changes in the ordering should be added in a follow-up.
I prefer a one-stop shop. A "tree / flat" toggle could be useful in addition. |
affc6af
to
3dcbdc4
Compare
Regression from #12115: When moving to next file on bottom file with scrollwheel, the selection restarts at the top file. |
Directory.Packages.props
Outdated
@@ -14,6 +14,7 @@ | |||
<PackageVersion Include="LibGit2Sharp" Version="0.27.2" /> | |||
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.1.1" /> | |||
<PackageVersion Include="Microsoft.Toolkit.HighPerformance" Version="7.1.2" /> | |||
<PackageVersion Include="StrongOf" Version="1.2.4" /> |
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.
Do we really need another external dependency?
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.
IMO yes, because it is a light-weight, mature cure for Primitive Obsession (refer to https://github.com/BenjaminAbt/StrongOf/blob/main/README.md).
In order to be able to collapse an uninteresting group of files instead of scrolling a lot.
Really? If yes, we will need a |
4130865
to
46313ef
Compare
46313ef
to
a9dfc19
Compare
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.
I suggest this is merged even if there are no more reviewers.
There are follow ups and this is needed for dark mode
@mstv A little UX improvement that I would like to see added: |
I hope it's not too late to ask. Is it possible to have tree-view as an option? Currently UX has so many subtle and not so subtle sharp edges that it makes it hardly usable (for me). |
Sorry that it broke how you use it. Multi-selection works with
|
The tree expand/collapse action must be bound to a double click not a single click. Otherwise, it's extremely annoying.... 12116.mp4Also, note the selected image background - it doesn't look being correctly reset. |
This is only if there multiple diff groups. There is no real use case to select an expanded group other than collapsing it.
This is Windows Explorer style. |
I update #12150 with the inactive selected in FileStatus |
Implemented in #12149. |
(I am not completely sure about what you are going to.) |
First and foremost, this is an accessibility issue. Users (like me in this case) can click on the group accidentally. |
Groups in the Diff tab were collapsible with single click - but only if all filenames fit into the control. This limitation used to be a nuisance. Enabling I have restricted the single-click collapse/expand to the icons of the root nodes (added to #12149). |
We lost the feature to be able to drag a file from the tree (and drop it in an external application). |
The whole mechanic of staging/unstaging has been seriously affected, which has significant usability implications. The new UI introduced the concept of folders, which traditionally (i.e., in Windows) have a different meaning for double-click (if clicked on a icon/text and not on the [+] button) - that's expand/collapse/open. |
Try #12149, please. |
Fixes #1326
Proposed changes
FileStatusList
:ListView
withTreeView
GitItemStatusFileExtensionComparer
,GitItemStatusNameComparer
,GitStatusListSorter
,ImageIndexListSorter
Screenshots
Before
After
Modes:
FormCommit - Before
After: flat list by name / by path / tree
Prepared for replacing "File tree" in a follow-up:
Test methodology
Please do not squash merge
✒️ I contribute this code under The Developer Certificate of Origin.