[PATCH v2 09/10] gitk: improve keyboard convenience in reset dialog
From: Jens Lidestrom <jens@lidestrom.se>
Make it more convenient to use the reset dialog using keyboard.
* Set focus to the combo box.
* Accept with Return key.
* Auto-select combo items when navigating in menu with up/down keys.
Signed-off-by: Jens Lidestrom <jens@lidestrom.se>
---
gitk-git/gitk | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/gitk-git/gitk b/gitk-git/gitk
index f559e279b7a..fafff2b1a5b 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -9902,27 +9902,40 @@ proc resethead {reset_target_id} {
ttk_toplevel $w
make_transient $w .
wm title $w [mc "Confirm reset"]
+
${NS}::label $w.m -text \
[mc "Reset branch %s to %s?" $mainhead [commit_name $reset_target_id 1]]
pack $w.m -side top -fill x -padx 20 -pady 20
${NS}::labelframe $w.f -text [mc "Reset type:"]
+
set resettype mixed
+
${NS}::radiobutton $w.f.soft -value soft -variable resettype \
-text [mc "Soft: Leave working tree and index untouched"]
+ bind $w.f.soft <Key-Up> "set resettype hard"
+ bind $w.f.soft <Key-Down> "set resettype mixed"
grid $w.f.soft -sticky w
+
${NS}::radiobutton $w.f.mixed -value mixed -variable resettype \
-text [mc "Mixed: Leave working tree untouched, reset index"]
+ bind $w.f.mixed <Key-Up> "set resettype soft"
+ bind $w.f.mixed <Key-Down> "set resettype hard"
grid $w.f.mixed -sticky w
+
${NS}::radiobutton $w.f.hard -value hard -variable resettype \
-text [mc "Hard: Reset working tree and index\n(discard ALL local changes)"]
+ bind $w.f.hard <Key-Up> "set resettype mixed"
+ bind $w.f.hard <Key-Down> "set resettype soft"
grid $w.f.hard -sticky w
pack $w.f -side top -fill x -padx 4
+
${NS}::button $w.ok -text [mc OK] -command "set confirm_ok 1; destroy $w"
+ bind $w <Key-Return> "set confirm_ok 1; destroy $w"
pack $w.ok -side left -fill x -padx 20 -pady 20
${NS}::button $w.cancel -text [mc Cancel] -command "destroy $w"
bind $w <Key-Escape> [list destroy $w]
pack $w.cancel -side right -fill x -padx 20 -pady 20
- bind $w <Visibility> "grab $w; focus $w"
+ bind $w <Visibility> "grab $w; focus $w.f.mixed"
tkwait window $w
if {!$confirm_ok} return
if {[catch {set fd [open \
--
gitgitgadget