diff options
Diffstat (limited to 'library/ttk/panedwindow.tcl')
-rw-r--r-- | library/ttk/panedwindow.tcl | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/library/ttk/panedwindow.tcl b/library/ttk/panedwindow.tcl new file mode 100644 index 0000000..451e5c4 --- /dev/null +++ b/library/ttk/panedwindow.tcl @@ -0,0 +1,87 @@ +# +# $Id: panedwindow.tcl,v 1.1 2006/10/31 01:42:27 hobbs Exp $ +# +# Ttk widget set: bindings for TPanedwindow widget. +# + +namespace eval ttk::panedwindow { + variable State + array set State { + pressed 0 + pressX - + pressY - + sash - + sashPos - + } +} + +## Bindings: +# +bind TPanedwindow <ButtonPress-1> { ttk::panedwindow::Press %W %x %y } +bind TPanedwindow <B1-Motion> { ttk::panedwindow::Drag %W %x %y } +bind TPanedwindow <ButtonRelease-1> { ttk::panedwindow::Release %W %x %y } + +bind TPanedwindow <Motion> { ttk::panedwindow::SetCursor %W %x %y } +bind TPanedwindow <Enter> { ttk::panedwindow::SetCursor %W %x %y } +bind TPanedwindow <Leave> { ttk::panedwindow::ResetCursor %W } +# See PanedEventProc in ttkPanedwindow.c: +bind TPanedwindow <<EnteredChild>> { ttk::panedwindow::ResetCursor %W } + + +## Sash movement: +# +proc ttk::panedwindow::Press {w x y} { + variable State + + lassign [$w identify $x $y] sash element + if {![info exists sash]} { + set State(pressed) 0 + return + } + set State(pressed) 1 + set State(pressX) $x + set State(pressY) $y + set State(sash) $sash + set State(sashPos) [$w sashpos $sash] +} + +proc ttk::panedwindow::Drag {w x y} { + variable State + if {!$State(pressed)} { return } + switch -- [$w cget -orient] { + horizontal { set delta [expr {$x - $State(pressX)}] } + vertical { set delta [expr {$y - $State(pressY)}] } + } + $w sashpos $State(sash) [expr {$State(sashPos) + $delta}] +} + +proc ttk::panedwindow::Release {w x y} { + variable State + set State(pressed) 0 + SetCursor $w $x $y +} + +## Cursor management: +# +proc ttk::panedwindow::ResetCursor {w} { + variable State + if {!$State(pressed)} { + $w configure -cursor {} + } +} + +proc ttk::panedwindow::SetCursor {w x y} { + variable ::ttk::Cursors + + if {![llength [$w identify $x $y]]} { + ResetCursor $w + } else { + # Assume we're over a sash. + switch -- [$w cget -orient] { + horizontal { $w configure -cursor $Cursors(hresize) } + vertical { $w configure -cursor $Cursors(vresize) } + } + } +} + +#*EOF* |