summaryrefslogtreecommitdiffstats
path: root/library/ttk/panedwindow.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'library/ttk/panedwindow.tcl')
-rw-r--r--library/ttk/panedwindow.tcl87
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*