Double click to stage/unstage, plus stage/unstage all option.
I think it would improve the workflow to use double click to stage or unstage a file (my mouse has a dedicated double click button), and to have an easy way to stage or unstage all files.
Perhaps the latter could be available on right click of the stage button, or perhaps an addition button for this. I know you can select all and then stage, but that's a little cumbersome.
Double click to stage: Let me know if this option is an acceptable substitute for you: Settings > Advanced > Middle-click to stage/unstage a file or the selected lines.
The reason I chose the middle-click is for consistency with staging specific lines in the diff (double-clicking in the diff is already reserved for selecting a word, as is standard in Qt).
Stage All: OK, I'll consider this.
For the mouse shortcuts to stage a file, I agree with @jorio that this should be an option rather than a default behavior. I'd hate to have e.g. carefully staged selected hunks from a file only to get the whole file staged by an accidental double- or middle-click in it.
@jorio : Hmmm. I don't have a middle-click, having remapped it to double-click, which I find ubiquitously far more useful.
@waldyrious : I did mean double-click on the file itself in the left panel, not within the diffs in the right panel.
@jorio : I have remapped my mouse-wheel button to be middle-click, and while it's a bit awkward to operate as a button it is tolerable.
If it's not too much trouble, I would vastly prefer to have the option to choose either middle-click or double-click for the above mentioned staging actions. That is, I would prefer a "Staging with Mouse" option that allowed me to choose "Double Click", "Middle Click", "Both", or "Neither" (the last considering @waldyrious' observation about accidentally staging the whole file), and have that work on both lines in the diff view and files in the unstaged and staged list views.
Stage/unstage all could follow this setting and be done when either middle or double click is done on the stage or unstage buttons (which I would find fairly intuitive). I do know that a single click is going to precede the double click, but that should not pragmatically matter. Though the buttons will need to be enabled if there's something in the list even if nothing is selected — that suggests that it might be good to simply stage/unstage all if nothing is selected and the button is clicked?
I should note that stage/unstage all could easily be declined in lieu of custom toolbar buttons. So this request would then devolve to an application setting to choose between middle-click, double-click, both, or neither.
I would vastly prefer to have the option to choose either middle-click or double-click [...] and have that work on both lines in the diff view and files in the unstaged and staged list views.
I understand your preference, but my concern with double-clicking is that this would conflict with text selection in the diff.
Say you've selected a block of text that you want to stage by double-clicking. The first click in the sequence will reset the cursor position and clear your selection (as in most standard text editors). So, the second click would only stage a single line instead of your previous selection.
This is why I designed this feature to use the middle click – that button wasn't overriding existing behavior in this context.
@jorio : Granted, and understood on the limitations of double click. Which is why it should be optional, and opt-in. It could apply only to the stage/unstage list to allow double-click to stage the clicked file.
My issue with middle click is that the wheel button is awkward to use. But I could live with it, and don't mean to be argumentative. Honestly, I would like to swap middle-click with double-click throughout the app, even with the limitation of double-click reducing any selection to 1; I expect that anyway and will use the right click context menu for actioning multiselections.
I tend to either stage all changed files in one hit, or selectively stage files from a larger group. They are more rarely a contiguous set, so I want to quickly double click each disparate file rather than select then move to the button, then back to the list and so on. When there's a large contiguous set, it's not much trouble to select them all, right-click, stage, and move on. But more often there's 2 or 3 at a time among a bunch of a dozen or two.
Additionally, if you attempt to commit with nothing selected, it will offer to submit an empty commit (I've no idea why that's ever useful); that dialog could offer to stage all and commit.