Subject: Re: [PATCH 3/4] git-gui: only except numbers in the goto-line input

From: Pat Thoyts <[email-masked]>
Date: Sat, 15 Oct 2011 23:17:08 +0100

Bert Wesarg <[email-masked]> writes:

>Signed-off-by: Bert Wesarg <[email-masked]>
>---
> lib/line.tcl |   16 ++++++++++++++--
> 1 files changed, 14 insertions(+), 2 deletions(-)
>
>diff --git a/lib/line.tcl b/lib/line.tcl
>index 692485a..70785e1 100644
>--- a/lib/line.tcl
>+++ b/lib/line.tcl
>@@ -15,7 +15,11 @@ constructor new {i_w i_text args} {
> 
> 	${NS}::frame  $w
> 	${NS}::label  $w.l       -text [mc "Goto Line:"]
>-	entry  $w.ent -textvariable ${__this}::linenum -background lightgreen
>+	entry  $w.ent \
>+		-textvariable ${__this}::linenum \
>+		-background lightgreen \
>+		-validate key \
>+		-validatecommand [cb _validate %P]
> 	${NS}::button $w.bn      -text [mc Go] -command [cb _incrgoto]
> 
> 	pack   $w.l   -side left
>@@ -26,7 +30,7 @@ constructor new {i_w i_text args} {
> 	grid remove $w
> 
> 	bind $w.ent <Return> [cb _incrgoto]
>-	bind $w.ent <Escape> [list linebar::hide $this]
>+	bind $w.ent <Escape> [cb hide]
> 
> 	bind $w <Destroy> [list delete_this $this]
> 	return $this
>@@ -55,6 +59,14 @@ method editor {} {
> 	return $w.ent
> }
> 
>+method _validate {P} {
>+	# only accept numbers as input
>+	if {[regexp {\d*} $P]} {
>+		return 1
>+	}
>+	return 0
>+}
>+
> method _incrgoto {} {
> 	if {$linenum ne {}} {
> 		$ctext see $linenum.0

This one doesn't actually work when I try it it accepts alphanumeric
input. However, replacing the validate body with
  string is integer $P
fixes it to operate as intended so I'll replace it with this.
Looks like it needs theming too but that can be a separate patch.
-- 
Pat Thoyts                            http://www.patthoyts.tk/
PGP fingerprint 2C 6E 98 07 2C 59 C8 97  10 CE 11 E6 04 E0 B9 DD