diff options
author | Paul Mackerras <paulus@samba.org> | 2007-08-13 10:09:02 +1000 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-08-13 10:09:02 +1000 |
commit | 3c409a06f1fb10390458b34a533d71ed017ed4a7 (patch) | |
tree | dc64f999cb3c59cbd8d152c6f228c673e60bb222 /gitk | |
parent | e341c06d8140b689001ddc183ec3476c1ede264a (diff) | |
parent | 6c87d60cc6202d4de5ac6d136394602feefeafc6 (diff) | |
download | git-3c409a06f1fb10390458b34a533d71ed017ed4a7.tar.gz |
Merge branch 'master' into dev
Diffstat (limited to 'gitk')
-rwxr-xr-x | gitk | 46 |
1 files changed, 37 insertions, 9 deletions
@@ -460,7 +460,7 @@ proc readrefs {} { lappend idotherrefs($id) $name } } - close $refd + catch {close $refd} set mainhead {} set mainheadid {} catch { @@ -856,8 +856,13 @@ proc makewindow {} { pack .ctop -fill both -expand 1 bindall <1> {selcanvline %W %x %y} #bindall <B1-Motion> {selcanvline %W %x %y} - bindall <ButtonRelease-4> "allcanvs yview scroll -5 units" - bindall <ButtonRelease-5> "allcanvs yview scroll 5 units" + if {[tk windowingsystem] == "win32"} { + bind . <MouseWheel> { windows_mousewheel_redirector %W %X %Y %D } + bind $ctext <MouseWheel> { windows_mousewheel_redirector %W %X %Y %D ; break } + } else { + bindall <ButtonRelease-4> "allcanvs yview scroll -5 units" + bindall <ButtonRelease-5> "allcanvs yview scroll 5 units" + } bindall <2> "canvscan mark %W %x %y" bindall <B2-Motion> "canvscan dragto %W %x %y" bindkey <Home> selfirstline @@ -960,6 +965,24 @@ proc makewindow {} { -command {flist_hl 1} } +# Windows sends all mouse wheel events to the current focused window, not +# the one where the mouse hovers, so bind those events here and redirect +# to the correct window +proc windows_mousewheel_redirector {W X Y D} { + global canv canv2 canv3 + set w [winfo containing -displayof $W $X $Y] + if {$w ne ""} { + set u [expr {$D < 0 ? 5 : -5}] + if {$w == $canv || $w == $canv2 || $w == $canv3} { + allcanvs yview scroll $u units + } else { + catch { + $w yview scroll $u units + } + } + } +} + # mouse-2 makes all windows scan vertically, but only the one # the cursor is in scans horizontally proc canvscan {op w x y} { @@ -997,8 +1020,8 @@ proc bindkey {ev script} { # set the focus back to the toplevel for any click outside # the entry widgets proc click {w} { - global entries - foreach e $entries { + global ctext entries + foreach e [concat $entries $ctext] { if {$w == $e} return } focus . @@ -2887,6 +2910,7 @@ proc layoutrows {row endrow last} { } elseif {!$idinlist($p)} { lappend oldolds $p } + set idinlist($p) 1 } set nev [expr {[llength $idlist] + [llength $newolds] + [llength $oldolds] - $maxwidth + 1}] @@ -2936,11 +2960,9 @@ proc layoutrows {row endrow last} { foreach i $newolds { set x [idcol $idlist $i $x] set idlist [linsert $idlist $x $i] - set idinlist($i) 1 set idrowranges($i) $id } foreach oid $oldolds { - set idinlist($oid) 1 set x [idcol $idlist $oid $x] set idlist [linsert $idlist $x $oid] makeuparrow $oid $row $x @@ -2979,7 +3001,7 @@ proc layouttail {} { set col [expr {[llength $idlist] - 1}] set id [lindex $idlist $col] addextraid $id $row - unset idinlist($id) + catch {unset idinlist($id)} lappend idrowranges($id) $id lappend rowrangelist $idrowranges($id) unset idrowranges($id) @@ -4551,6 +4573,7 @@ proc sellastline {} { proc selnextline {dir} { global selectedline + focus . if {![info exists selectedline]} return set l [expr {$selectedline + $dir}] unmarkmatches @@ -4631,6 +4654,7 @@ proc godo {elt} { proc goback {} { global history historyindex + focus . if {$historyindex > 1} { incr historyindex -1 @@ -4644,6 +4668,7 @@ proc goback {} { proc goforw {} { global history historyindex + focus . if {$historyindex < [llength $history]} { set cmd [lindex $history $historyindex] @@ -7561,7 +7586,10 @@ catch {source ~/.gitk} font create optionfont -family sans-serif -size -12 # check that we can find a .git directory somewhere... -set gitdir [gitdir] +if {[catch {set gitdir [gitdir]}]} { + show_error {} . "Cannot find a git repository here." + exit 1 +} if {![file isdirectory $gitdir]} { show_error {} . "Cannot find the git directory \"$gitdir\"." exit 1 |