@@ -2301,6 +2301,11 @@ proc scrollval {D {koff 0}} {
23012301 return [ expr int(-($D / $scroll_D0 ) * max(1, $kscroll -$koff ))]
23022302}
23032303
2304+ proc precisescrollval {D {koff 0}} {
2305+ global kscroll
2306+ return [ expr (-($D / 10.0) * max(1, $kscroll -$koff ))]
2307+ }
2308+
23042309proc bind_mousewheel {} {
23052310 global canv cflist ctext
23062311 bindall <MouseWheel> {allcanvs yview scroll [ scrollval %D] units}
@@ -2319,6 +2324,25 @@ proc bind_mousewheel {} {
23192324 bind $cflist <Alt-MouseWheel> {$cflist yview scroll [ scrollval 5*%D 2] units}
23202325 bind $cflist <Alt-Shift-MouseWheel> break
23212326 bind $canv <Alt-Shift-MouseWheel> {$canv xview scroll [ scrollval 5*%D] units}
2327+
2328+ bindall <TouchpadScroll> {
2329+ lassign [ tk::PreciseScrollDeltas %D] deltaX deltaY
2330+ allcanvs yview scroll [ precisescrollval $deltaY ] units
2331+ }
2332+ bind $ctext <TouchpadScroll> {
2333+ lassign [ tk::PreciseScrollDeltas %D] deltaX deltaY
2334+ $ctext yview scroll [ precisescrollval $deltaY 2] units
2335+ $ctext xview scroll [ precisescrollval $deltaX 2] units
2336+ }
2337+ bind $cflist <TouchpadScroll> {
2338+ lassign [ tk::PreciseScrollDeltas %D] deltaX deltaY
2339+ $cflist yview scroll [ precisescrollval $deltaY 2] units
2340+ }
2341+ bind $canv <TouchpadScroll> {
2342+ lassign [ tk::PreciseScrollDeltas %D] deltaX deltaY
2343+ $canv xview scroll [ precisescrollval $deltaX ] units
2344+ allcanvs yview scroll [ precisescrollval $deltaY ] units
2345+ }
23222346 }
23232347}
23242348
0 commit comments