diff options
author | hobbs <hobbs> | 2002-02-22 02:41:16 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2002-02-22 02:41:16 (GMT) |
commit | 5ea47f877cf7111d2293b4809c2ebe62bf0710e8 (patch) | |
tree | 4d2d79cd819d97123303e04c48e9a6ca8b7a5a49 /library | |
parent | 5d7dc21d5dcc4ac242da18a351231d059aa18cc5 (diff) | |
download | tk-5ea47f877cf7111d2293b4809c2ebe62bf0710e8.zip tk-5ea47f877cf7111d2293b4809c2ebe62bf0710e8.tar.gz tk-5ea47f877cf7111d2293b4809c2ebe62bf0710e8.tar.bz2 |
TIP #41 implementation, panedwindow [Patch #512503] (melski)
Diffstat (limited to 'library')
-rw-r--r-- | library/panedwindow.tcl | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/library/panedwindow.tcl b/library/panedwindow.tcl new file mode 100644 index 0000000..a232f89 --- /dev/null +++ b/library/panedwindow.tcl @@ -0,0 +1,136 @@ +# panedwindow.tcl -- +# +# This file defines the default bindings for Tk panedwindow widgets and +# provides procedures that help in implementing those bindings. +# +# RCS: @(#) $Id: panedwindow.tcl,v 1.1 2002/02/22 02:41:17 hobbs Exp $ +# + +bind PanedWindow <Button-1> { ::tk::panedwindow::MarkSash %W %x %y 1 } +bind PanedWindow <Button-2> { ::tk::panedwindow::MarkSash %W %x %y 0 } + +bind PanedWindow <B1-Motion> { ::tk::panedwindow::DragSash %W %x %y 1 } +bind PanedWindow <B2-Motion> { ::tk::panedwindow::DragSash %W %x %y 0 } + +bind PanedWindow <ButtonRelease-1> {::tk::panedwindow::ReleaseSash %W %x %y 1} +bind PanedWindow <ButtonRelease-2> {::tk::panedwindow::ReleaseSash %W %x %y 0} + +bind PanedWindow <Motion> { ::tk::panedwindow::Motion %W %x %y } + +bind PanedWindow <Leave> { ::tk::panedwindow::Leave %W } + +# Initialize namespace +namespace eval ::tk::panedwindow {} + +# ::tk::panedwindow::MarkSash -- +# +# ADD COMMENTS HERE +# +# Arguments: +# args comments +# Results: +# Returns ... +# +proc ::tk::panedwindow::MarkSash {w x y proxy} { + set what [$w identify $x $y] + if { [llength $what] == 2 } { + foreach {index which} $what break + if { !$::tk_strictMotif || [string equal $which "handle"] } { + if {!$proxy} { $w sash mark $index $x $y } + set ::tk::Priv(sash) $index + } + } +} + +# ::tk::panedwindow::DragSash -- +# +# ADD COMMENTS HERE +# +# Arguments: +# args comments +# Results: +# Returns ... +# +proc ::tk::panedwindow::DragSash {w x y proxy} { + if { [info exists ::tk::Priv(sash)] } { + if {$proxy} { + $w proxy place $x $y + } else { + $w sash dragto $::tk::Priv(sash) $x $y + $w sash mark $::tk::Priv(sash) $x $y + } + } +} + +# ::tk::panedwindow::ReleaseSash -- +# +# ADD COMMENTS HERE +# +# Arguments: +# args comments +# Results: +# Returns ... +# +proc ::tk::panedwindow::ReleaseSash {w proxy} { + if { [info exists ::tk::Priv(sash)] } { + if {$proxy} { + foreach {x y} [$w proxy coord] break + $w sash place $::tk::Priv(sash) $x $y + unset ::tk::Priv(sash) + $w proxy forget + } else { + unset ::tk::Priv(sash) + } + } +} + +# ::tk::panedwindow::Motion -- +# +# ADD COMMENTS HERE +# +# Arguments: +# args comments +# Results: +# Returns ... +# +proc ::tk::panedwindow::Motion {w x y} { + variable ::tk::Priv + set id [$w identify $x $y] + if { [llength $id] == 2 } { + if { !$::tk_strictMotif || [string equal [lindex $id 1] "handle"] } { + if { ![info exists Priv(panecursor)] } { + set Priv(panecursor) [$w cget -cursor] + } + if { [string equal [$w cget -sashcursor] ""] } { + if { [string equal [$w cget -orient] "horizontal"] } { + $w configure -cursor sb_h_double_arrow + } else { + $w configure -cursor sb_v_double_arrow + } + } else { + $w configure -cursor [$w cget -sashcursor] + } + return + } + } + if { [info exists Priv(panecursor)] } { + $w configure -cursor $Priv(panecursor) + unset Priv(panecursor) + } +} + +# ::tk::panedwindow::Leave -- +# +# ADD COMMENTS HERE +# +# Arguments: +# args comments +# Results: +# Returns ... +# +proc ::tk::panedwindow::Leave {w} { + if { [info exists ::tk::Priv(panecursor)] } { + $w configure -cursor $::tk::Priv(panecursor) + unset ::tk::Priv(panecursor) + } +} |