From fb08baca3340099d149a88f6ede19a6870870c08 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 25 Jan 2007 16:50:15 -0500 Subject: [PATCH] git-gui: Prefer Tk's entry widget over a 1 line text field. I'm a fool and previously used a text widget configured with a height of 1 and special bindings to handle focus traversal rather than the already built (and properly behaved) entry widget. Signed-off-by: Shawn O. Pearce --- git-gui.sh | 75 +++++++++++++++++++++++++++----------------------------------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 9dbe1156c5..811e20217d 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -1865,8 +1865,9 @@ proc do_create_branch_action {w} { global all_heads null_sha1 repo_config global create_branch_checkout create_branch_revtype global create_branch_head create_branch_trackinghead + global create_branch_name create_branch_revexp - set newbranch [string trim [$w.desc.name_t get 0.0 end]] + set newbranch $create_branch_name if {$newbranch eq {} || $newbranch eq $repo_config(gui.newbranchtemplate)} { tk_messageBox \ @@ -1903,7 +1904,7 @@ proc do_create_branch_action {w} { switch -- $create_branch_revtype { head {set rev $create_branch_head} tracking {set rev $create_branch_trackinghead} - expression {set rev [string trim [$w.from.exp_t get 0.0 end]]} + expression {set rev $create_branch_revexp} } if {[catch {set cmt [exec git rev-parse --verify "${rev}^0"]}]} { tk_messageBox \ @@ -1958,6 +1959,7 @@ proc do_create_branch {} { global all_heads current_branch repo_config global create_branch_checkout create_branch_revtype global create_branch_head create_branch_trackinghead + global create_branch_name create_branch_revexp set w .branch_editor toplevel $w @@ -1983,26 +1985,18 @@ proc do_create_branch {} { -text {Branch Description} \ -font font_ui label $w.desc.name_l -text {Name:} -font font_ui - text $w.desc.name_t \ + entry $w.desc.name_t \ -borderwidth 1 \ -relief sunken \ - -height 1 \ -width 40 \ - -font font_ui - $w.desc.name_t insert 0.0 $repo_config(gui.newbranchtemplate) - grid $w.desc.name_l $w.desc.name_t -sticky we -padx {0 5} - bind $w.desc.name_t {focus [tk_focusPrev %W];break} - bind $w.desc.name_t {focus [tk_focusNext %W];break} - bind $w.desc.name_t "do_create_branch_action $w;break" - bind $w.desc.name_t { - if {{%K} ne {BackSpace} - && {%K} ne {Tab} - && {%K} ne {Escape} - && {%K} ne {Return}} { - if {%k <= 32} break - if {[string first %A {~^:?*[}] >= 0} break + -textvariable create_branch_name \ + -font font_ui \ + -validate key \ + -validatecommand { + if {%d == 1 && [regexp {[~^:?*\[\0- ]} %S]} {return 0} + return 1 } - } + grid $w.desc.name_l $w.desc.name_t -sticky we -padx {0 5} grid columnconfigure $w.desc 1 -weight 1 pack $w.desc -anchor nw -fill x -pady 5 -padx 5 @@ -2034,18 +2028,21 @@ proc do_create_branch {} { -value expression \ -variable create_branch_revtype \ -font font_ui - text $w.from.exp_t \ + entry $w.from.exp_t \ -borderwidth 1 \ -relief sunken \ - -height 1 \ -width 50 \ - -font font_ui + -textvariable create_branch_revexp \ + -font font_ui \ + -validate key \ + -validatecommand { + if {%d == 1 && [regexp {\s} %S]} {return 0} + if {%d == 1 && [string length %S] > 0} { + set create_branch_revtype expression + } + return 1 + } grid $w.from.exp_r $w.from.exp_t -sticky we -padx {0 5} - bind $w.from.exp_t {focus [tk_focusPrev %W];break} - bind $w.from.exp_t {focus [tk_focusNext %W];break} - bind $w.from.exp_t "do_create_branch_action $w;break" - bind $w.from.exp_t break - bind $w.from.exp_t {set create_branch_revtype expression} grid columnconfigure $w.from 1 -weight 1 pack $w.from -anchor nw -fill x -pady 5 -padx 5 @@ -2062,8 +2059,14 @@ proc do_create_branch {} { set create_branch_checkout 1 set create_branch_head $current_branch set create_branch_revtype head + set create_branch_name $repo_config(gui.newbranchtemplate) + set create_branch_revexp {} - bind $w "grab $w; focus $w.desc.name_t" + bind $w " + grab $w + $w.desc.name_t icursor end + focus $w.desc.name_t + " bind $w "destroy $w" bind $w "do_create_branch_action $w;break" wm title $w "[appname] ([reponame]): Create Branch" @@ -3329,10 +3332,7 @@ proc do_options {} { pack $w.buttons.restore -side left button $w.buttons.save -text Save \ -font font_ui \ - -command " - catch {eval \[bind \[focus -displayof $w\] \]} - do_save_config $w - " + -command [list do_save_config $w] pack $w.buttons.save -side right button $w.buttons.cancel -text {Cancel} \ -font font_ui \ @@ -3382,21 +3382,12 @@ proc do_options {} { t { frame $w.$f.$name label $w.$f.$name.l -text "$text:" -font font_ui - text $w.$f.$name.v \ + entry $w.$f.$name.v \ -borderwidth 1 \ -relief sunken \ - -height 1 \ -width 20 \ + -textvariable ${f}_config_new(gui.$name) \ -font font_ui - $w.$f.$name.v insert 0.0 [set ${f}_config_new(gui.$name)] - bind $w.$f.$name.v {focus [tk_focusPrev %W];break} - bind $w.$f.$name.v {focus [tk_focusNext %W];break} - bind $w.$f.$name.v break - bind $w.$f.$name.v "$w.$f.$name.v tag add sel 0.0 end" - bind $w.$f.$name.v " - set ${f}_config_new(gui.$name) \ - \[string trim \[$w.$f.$name.v get 0.0 end\]\] - " pack $w.$f.$name.l -side left -anchor w pack $w.$f.$name.v -side left -anchor w \ -fill x -expand 1 \ -- 2.11.4.GIT