summaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authortreectrl <treectrl>2005-05-01 01:44:07 (GMT)
committertreectrl <treectrl>2005-05-01 01:44:07 (GMT)
commit5c6503a2729b9497a4dbc1b22be8ae82cfe26e19 (patch)
treec2813c946f1be8ef9d6032b5ddeb7bc7bf5353a7 /library
parentb26854092d2d28dfba6523e78b77ed804bdc4277 (diff)
downloadtktreectrl-5c6503a2729b9497a4dbc1b22be8ae82cfe26e19.zip
tktreectrl-5c6503a2729b9497a4dbc1b22be8ae82cfe26e19.tar.gz
tktreectrl-5c6503a2729b9497a4dbc1b22be8ae82cfe26e19.tar.bz2
Use new column -state option. Will probably remove column -sunken.
Support for new Theme API "active" state in column headers.
Diffstat (limited to 'library')
-rw-r--r--library/treectrl.tcl44
1 files changed, 44 insertions, 0 deletions
diff --git a/library/treectrl.tcl b/library/treectrl.tcl
index e1fd3d2..bba730c 100644
--- a/library/treectrl.tcl
+++ b/library/treectrl.tcl
@@ -1,8 +1,10 @@
bind TreeCtrl <Motion> {
TreeCtrl::CursorCheck %W %x %y
+ TreeCtrl::MotionInHeader %W %x %y
}
bind TreeCtrl <Leave> {
TreeCtrl::CursorCancel %W
+ TreeCtrl::MotionInHeader %W
}
bind TreeCtrl <ButtonPress-1> {
@@ -258,6 +260,43 @@ proc ::TreeCtrl::CursorCancel {w} {
return
}
+proc ::TreeCtrl::MotionInHeader {w args} {
+ variable Priv
+ if {[llength $args]} {
+ set x [lindex $args 0]
+ set y [lindex $args 1]
+ set id [$w identify $x $y]
+ } else {
+ set id ""
+ }
+ if {[info exists Priv(inheader,$w)]} {
+ set prevColumn $Priv(inheader,$w)
+ } else {
+ set prevColumn ""
+ }
+ set column ""
+ if {[lindex $id 0] eq "header"} {
+ set column [lindex $id 1]
+ if {$column eq "tail"} {
+ set column ""
+ } elseif {![$w column cget $column -button]} {
+ set column ""
+ }
+ }
+ if {$column ne $prevColumn} {
+ if {$prevColumn ne ""} {
+ $w column configure $prevColumn -state normal
+ }
+ if {$column ne ""} {
+ $w column configure $column -state active
+ set Priv(inheader,$w) $column
+ } else {
+ unset Priv(inheader,$w)
+ }
+ }
+ return
+}
+
proc ::TreeCtrl::ButtonPress1 {w x y} {
variable Priv
focus $w
@@ -312,6 +351,7 @@ proc ::TreeCtrl::ButtonPress1 {w x y} {
set Priv(buttonMode) header
set Priv(column) $column
$w column configure $column -sunken yes
+ $w column configure $column -state pressed
return
}
set Priv(buttonMode) normal
@@ -375,10 +415,12 @@ proc ::TreeCtrl::Motion1 {w x y} {
if {![string match "header $Priv(column)*" $id]} {
if {[$w column cget $Priv(column) -sunken]} {
$w column configure $Priv(column) -sunken no
+ $w column configure $Priv(column) -state normal
}
} else {
if {![$w column cget $Priv(column) -sunken]} {
$w column configure $Priv(column) -sunken yes
+ $w column configure $Priv(column) -state pressed
}
}
}
@@ -417,6 +459,7 @@ proc ::TreeCtrl::Leave1 {w x y} {
header {
if {[$w column cget $Priv(column) -sunken]} {
$w column configure $Priv(column) -sunken no
+ $w column configure $Priv(column) -state normal
}
}
normal {
@@ -433,6 +476,7 @@ proc ::TreeCtrl::Release1 {w x y} {
header {
if {[$w column cget $Priv(column) -sunken]} {
$w column configure $Priv(column) -sunken no
+ $w column configure $Priv(column) -state active
# Don't generate the event if it wasn't installed
if {[lsearch -exact [$w notify eventnames] Header] != -1} {
$w notify generate <Header-invoke> \