# # Bindings for TScrollbar widget # # Still don't have a working ttk::scrollbar under OSX - # Swap in a [tk::scrollbar] on that platform, # unless user specifies -class or -style. # if {[tk windowingsystem] eq "aqua"} { rename ::ttk::scrollbar ::ttk::_scrollbar proc ttk::scrollbar {w args} { set constructor ::tk::scrollbar foreach {option _} $args { if {$option eq "-class" || $option eq "-style"} { set constructor ::ttk::_scrollbar break } } return [$constructor $w {*}$args] } } namespace eval ttk::scrollbar { variable State # State(xPress) -- # State(yPress) -- initial position of mouse at start of drag. # State(first) -- value of -first at start of drag. } bind TScrollbar <ButtonPress-1> { ttk::scrollbar::Press %W %x %y } bind TScrollbar <B1-Motion> { ttk::scrollbar::Drag %W %x %y } bind TScrollbar <ButtonRelease-1> { ttk::scrollbar::Release %W %x %y } bind TScrollbar <ButtonPress-2> { ttk::scrollbar::Jump %W %x %y } bind TScrollbar <B2-Motion> { ttk::scrollbar::Drag %W %x %y } bind TScrollbar <ButtonRelease-2> { ttk::scrollbar::Release %W %x %y } proc ttk::scrollbar::Scroll {w n units} { set cmd [$w cget -command] if {$cmd ne ""} { uplevel #0 $cmd scroll $n $units } } proc ttk::scrollbar::Moveto {w fraction} { set cmd [$w cget -command] if {$cmd ne ""} { uplevel #0 $cmd moveto $fraction } } proc ttk::scrollbar::Press {w x y} { variable State set State(xPress) $x set State(yPress) $y switch -glob -- [$w identify $x $y] { *uparrow - *leftarrow { ttk::Repeatedly Scroll $w -1 units } *downarrow - *rightarrow { ttk::Repeatedly Scroll $w 1 units } *thumb { set State(first) [lindex [$w get] 0] } *trough { set f [$w fraction $x $y] if {$f < [lindex [$w get] 0]} { # Clicked in upper/left trough ttk::Repeatedly Scroll $w -1 pages } elseif {$f > [lindex [$w get] 1]} { # Clicked in lower/right trough ttk::Repeatedly Scroll $w 1 pages } else { # Clicked on thumb (???) set State(first) [lindex [$w get] 0] } } } } proc ttk::scrollbar::Drag {w x y} { variable State if {![info exists State(first)]} { # Initial buttonpress was not on the thumb, # or something screwy has happened. In either case, ignore: return; } set xDelta [expr {$x - $State(xPress)}] set yDelta [expr {$y - $State(yPress)}] Moveto $w [expr {$State(first) + [$w delta $xDelta $yDelta]}] } proc ttk::scrollbar::Release {w x y} { variable State unset -nocomplain State(xPress) State(yPress) State(first) ttk::CancelRepeat } # scrollbar::Jump -- ButtonPress-2 binding for scrollbars. # Behaves exactly like scrollbar::Press, except that # clicking in the trough jumps to the the selected position. # proc ttk::scrollbar::Jump {w x y} { variable State switch -glob -- [$w identify $x $y] { *thumb - *trough { set State(first) [$w fraction $x $y] Moveto $w $State(first) set State(xPress) $x set State(yPress) $y } default { Press $w $x $y } } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
altTheme.tcl | File | 3.26 KB | 0644 |
|
aquaTheme.tcl | File | 1.95 KB | 0644 |
|
button.tcl | File | 2.91 KB | 0644 |
|
clamTheme.tcl | File | 4.16 KB | 0644 |
|
classicTheme.tcl | File | 3.44 KB | 0644 |
|
combobox.tcl | File | 12.1 KB | 0644 |
|
cursors.tcl | File | 3.91 KB | 0644 |
|
defaults.tcl | File | 3.6 KB | 0644 |
|
entry.tcl | File | 15.77 KB | 0644 |
|
fonts.tcl | File | 5.44 KB | 0644 |
|
menubutton.tcl | File | 4.77 KB | 0644 |
|
notebook.tcl | File | 5.49 KB | 0644 |
|
panedwindow.tcl | File | 1.88 KB | 0644 |
|
progress.tcl | File | 1.06 KB | 0644 |
|
scale.tcl | File | 2.49 KB | 0644 |
|
scrollbar.tcl | File | 3.02 KB | 0644 |
|
sizegrip.tcl | File | 2.34 KB | 0644 |
|
spinbox.tcl | File | 4.16 KB | 0644 |
|
treeview.tcl | File | 8.66 KB | 0644 |
|
ttk.tcl | File | 4.44 KB | 0644 |
|
utils.tcl | File | 8.36 KB | 0644 |
|
vistaTheme.tcl | File | 9.13 KB | 0644 |
|
winTheme.tcl | File | 2.58 KB | 0644 |
|
xpTheme.tcl | File | 1.88 KB | 0644 |
|