GJS 2012/5/6 The autoscroll widget is a scrollbar that disappears when not needed. Most of the code came from the autoscroll package with minor changes. One option is added, -auto is set to either true or false.
#tkoo::autoscroll-v0.1.1.tm package provide tkoo::autoscroll 0.1.1 package require tkoo #Most of the code came from the autoscroll package with slight changes tkoo::class ::tkoo::autoscroll { superclass tkoo::ttk_scrollbar variable widCmd pathname options exists grid time constructor {wid args} { #check to see if the class already exists my Exists $wid set time 0 #-auto option my Opt add -auto auto Auto true { my variable widCmd pathname options exists if {![string is bool $value]} {error [msgcat::mc "expected boolean value but got \"%s\"" $value]} my set {*}[my get] } #get options that can only be edited during creation set cArgs [list] for {set i 0} {$i < [llength $args]} {incr i 2} { set o [lindex $args $i] set v [lindex $args [expr $i + 1]] switch -exact -- $o { -class - -container - -visual { lappend cArgs $o $v } } } #create the scrollbar if {![winfo exists $wid]} { ttk::scrollbar $wid {*}$cArgs } #bindings bind $wid <Map> {%W map} #default code next $wid {*}$args } method set {min max} { if {$min <= 0 && $max >= 1 && [my Opt get -auto]} { #no scrollbar needed if {![info exists grid]} { #prevent flicker effects if {[expr [clock milliseconds] - $time] < 50} {return} #hide the scrollbar switch -exact -- [winfo manager $pathname] { grid { lappend grid "[list grid $pathname] [grid info $pathname]" grid forget $pathname } pack { foreach x [pack slaves [winfo parent $w]] { lappend grid "[list pack $x] [pack info $x]" } pack forget $pathname } } } } elseif {[info exists grid]} { #store the time the scroll bar was shown set time [clock milliseconds] #show the scrollbar eval [join $grid \;] unset grid } return [tailcall $widCmd set $min $max] } method map {} { wm geometry [winfo toplevel $pathname] [wm geometry [winfo toplevel $pathname]] } }