gitk: Allow top panes to scroll horizontally with mouse button 2
Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
f340844962
commit
be0cd0981f
45
gitk
45
gitk
@ -512,8 +512,8 @@ proc makewindow {rargs} {
|
|||||||
#bindall <B1-Motion> {selcanvline %W %x %y}
|
#bindall <B1-Motion> {selcanvline %W %x %y}
|
||||||
bindall <ButtonRelease-4> "allcanvs yview scroll -5 units"
|
bindall <ButtonRelease-4> "allcanvs yview scroll -5 units"
|
||||||
bindall <ButtonRelease-5> "allcanvs yview scroll 5 units"
|
bindall <ButtonRelease-5> "allcanvs yview scroll 5 units"
|
||||||
bindall <2> "allcanvs scan mark 0 %y"
|
bindall <2> "canvscan mark %W %x %y"
|
||||||
bindall <B2-Motion> "allcanvs scan dragto 0 %y"
|
bindall <B2-Motion> "canvscan dragto %W %x %y"
|
||||||
bind . <Key-Up> "selnextline -1"
|
bind . <Key-Up> "selnextline -1"
|
||||||
bind . <Key-Down> "selnextline 1"
|
bind . <Key-Down> "selnextline 1"
|
||||||
bind . <Key-Right> "goforw"
|
bind . <Key-Right> "goforw"
|
||||||
@ -568,6 +568,19 @@ proc makewindow {rargs} {
|
|||||||
$rowctxmenu add command -label "Write commit to file" -command writecommit
|
$rowctxmenu add command -label "Write commit to file" -command writecommit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# mouse-2 makes all windows scan vertically, but only the one
|
||||||
|
# the cursor is in scans horizontally
|
||||||
|
proc canvscan {op w x y} {
|
||||||
|
global canv canv2 canv3
|
||||||
|
foreach c [list $canv $canv2 $canv3] {
|
||||||
|
if {$c == $w} {
|
||||||
|
$c scan $op $x $y
|
||||||
|
} else {
|
||||||
|
$c scan $op 0 $y
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
proc scrollcanv {cscroll f0 f1} {
|
proc scrollcanv {cscroll f0 f1} {
|
||||||
$cscroll set $f0 $f1
|
$cscroll set $f0 $f1
|
||||||
drawfrac $f0 $f1
|
drawfrac $f0 $f1
|
||||||
@ -833,7 +846,7 @@ proc initlayout {} {
|
|||||||
global rowidlist rowoffsets displayorder
|
global rowidlist rowoffsets displayorder
|
||||||
global rowlaidout rowoptim
|
global rowlaidout rowoptim
|
||||||
global idinlist rowchk
|
global idinlist rowchk
|
||||||
global commitidx numcommits
|
global commitidx numcommits canvxmax canv
|
||||||
global nextcolor
|
global nextcolor
|
||||||
|
|
||||||
set commitidx 0
|
set commitidx 0
|
||||||
@ -846,6 +859,16 @@ proc initlayout {} {
|
|||||||
catch {unset rowchk}
|
catch {unset rowchk}
|
||||||
set rowlaidout 0
|
set rowlaidout 0
|
||||||
set rowoptim 0
|
set rowoptim 0
|
||||||
|
set canvxmax [$canv cget -width]
|
||||||
|
}
|
||||||
|
|
||||||
|
proc setcanvscroll {} {
|
||||||
|
global canv canv2 canv3 numcommits linespc canvxmax canvy0
|
||||||
|
|
||||||
|
set ymax [expr {$canvy0 + ($numcommits - 0.5) * $linespc + 2}]
|
||||||
|
$canv conf -scrollregion [list 0 0 $canvxmax $ymax]
|
||||||
|
$canv2 conf -scrollregion [list 0 0 0 $ymax]
|
||||||
|
$canv3 conf -scrollregion [list 0 0 0 $ymax]
|
||||||
}
|
}
|
||||||
|
|
||||||
proc visiblerows {} {
|
proc visiblerows {} {
|
||||||
@ -887,7 +910,6 @@ proc layoutmore {} {
|
|||||||
|
|
||||||
proc showstuff {canshow} {
|
proc showstuff {canshow} {
|
||||||
global numcommits
|
global numcommits
|
||||||
global canvy0 linespc
|
|
||||||
global linesegends idrowranges idrangedrawn
|
global linesegends idrowranges idrangedrawn
|
||||||
|
|
||||||
if {$numcommits == 0} {
|
if {$numcommits == 0} {
|
||||||
@ -897,8 +919,7 @@ proc showstuff {canshow} {
|
|||||||
}
|
}
|
||||||
set row $numcommits
|
set row $numcommits
|
||||||
set numcommits $canshow
|
set numcommits $canshow
|
||||||
allcanvs conf -scrollregion \
|
setcanvscroll
|
||||||
[list 0 0 0 [expr {$canvy0 + ($numcommits - 0.5) * $linespc + 2}]]
|
|
||||||
set rows [visiblerows]
|
set rows [visiblerows]
|
||||||
set r0 [lindex $rows 0]
|
set r0 [lindex $rows 0]
|
||||||
set r1 [lindex $rows 1]
|
set r1 [lindex $rows 1]
|
||||||
@ -1366,7 +1387,7 @@ proc drawcmittext {id row col rmx} {
|
|||||||
global commitlisted commitinfo rowidlist
|
global commitlisted commitinfo rowidlist
|
||||||
global rowtextx idpos idtags idheads idotherrefs
|
global rowtextx idpos idtags idheads idotherrefs
|
||||||
global linehtag linentag linedtag
|
global linehtag linentag linedtag
|
||||||
global mainfont namefont
|
global mainfont namefont canvxmax
|
||||||
|
|
||||||
set ofill [expr {[info exists commitlisted($id)]? "blue": "white"}]
|
set ofill [expr {[info exists commitlisted($id)]? "blue": "white"}]
|
||||||
set x [xc $row $col]
|
set x [xc $row $col]
|
||||||
@ -1398,6 +1419,11 @@ proc drawcmittext {id row col rmx} {
|
|||||||
-text $name -font $namefont]
|
-text $name -font $namefont]
|
||||||
set linedtag($row) [$canv3 create text 3 $y -anchor w \
|
set linedtag($row) [$canv3 create text 3 $y -anchor w \
|
||||||
-text $date -font $mainfont]
|
-text $date -font $mainfont]
|
||||||
|
set xr [expr {$xt + [font measure $mainfont $headline]}]
|
||||||
|
if {$xr > $canvxmax} {
|
||||||
|
set canvxmax $xr
|
||||||
|
setcanvscroll
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc drawcmitrow {row} {
|
proc drawcmitrow {row} {
|
||||||
@ -2757,15 +2783,14 @@ proc setcoords {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc redisplay {} {
|
proc redisplay {} {
|
||||||
global canv canvy0 linespc numcommits
|
global canv
|
||||||
global selectedline
|
global selectedline
|
||||||
|
|
||||||
set ymax [lindex [$canv cget -scrollregion] 3]
|
set ymax [lindex [$canv cget -scrollregion] 3]
|
||||||
if {$ymax eq {} || $ymax == 0} return
|
if {$ymax eq {} || $ymax == 0} return
|
||||||
set span [$canv yview]
|
set span [$canv yview]
|
||||||
clear_display
|
clear_display
|
||||||
allcanvs conf -scrollregion \
|
setcanvscroll
|
||||||
[list 0 0 0 [expr {$canvy0 + ($numcommits - 0.5) * $linespc + 2}]]
|
|
||||||
allcanvs yview moveto [lindex $span 0]
|
allcanvs yview moveto [lindex $span 0]
|
||||||
drawvisible
|
drawvisible
|
||||||
if {[info exists selectedline]} {
|
if {[info exists selectedline]} {
|
||||||
|
Loading…
Reference in New Issue
Block a user