summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tltcl/lib/tk8.6/ttk/panedwindow.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tltcl/lib/tk8.6/ttk/panedwindow.tcl')
-rw-r--r--Master/tlpkg/tltcl/lib/tk8.6/ttk/panedwindow.tcl82
1 files changed, 82 insertions, 0 deletions
diff --git a/Master/tlpkg/tltcl/lib/tk8.6/ttk/panedwindow.tcl b/Master/tlpkg/tltcl/lib/tk8.6/ttk/panedwindow.tcl
new file mode 100644
index 00000000000..a2e073b44dc
--- /dev/null
+++ b/Master/tlpkg/tltcl/lib/tk8.6/ttk/panedwindow.tcl
@@ -0,0 +1,82 @@
+#
+# Bindings for ttk::panedwindow 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 <<NOTE-PW-LEAVE-NOTIFYINFERIOR>>
+bind TPanedwindow <<EnteredChild>> { ttk::panedwindow::ResetCursor %W }
+
+## Sash movement:
+#
+proc ttk::panedwindow::Press {w x y} {
+ variable State
+
+ set sash [$w identify $x $y]
+ if {$sash eq ""} {
+ 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)} {
+ ttk::setCursor $w {}
+ }
+}
+
+proc ttk::panedwindow::SetCursor {w x y} {
+ set cursor ""
+ if {[llength [$w identify $x $y]]} {
+ # Assume we're over a sash.
+ switch -- [$w cget -orient] {
+ horizontal { set cursor hresize }
+ vertical { set cursor vresize }
+ }
+ }
+ ttk::setCursor $w $cursor
+}
+
+#*EOF*