|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proc tixHListSingle:DragTimer {w ent} { |
|
case [tixHListSingle:GetState $w] { |
|
{1} { |
|
|
|
} |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proc tixHListSingle:Send:WaitDrag {w x y} { |
|
global tixPriv |
|
|
|
set ent [tixHListSingle:GetNearest $w $y] |
|
if {$ent != ""} { |
|
$w anchor set $ent |
|
$w select clear |
|
$w select set $ent |
|
|
|
set tixPriv(dd,$w:moved) 0 |
|
set tixPriv(dd,$w:entry) $ent |
|
|
|
|
|
|
|
|
|
|
|
} |
|
} |
|
|
|
proc tixHListSingle:Send:StartDrag {w x y} { |
|
global tixPriv |
|
set dd [tixGetDragDropContext $w] |
|
|
|
if {![info exists tixPriv(dd,$w:entry)]} { |
|
return |
|
} |
|
if {$tixPriv(dd,$w:entry) == ""} { |
|
return |
|
} |
|
|
|
if {$tixPriv(dd,$w:moved) == 0} { |
|
$w dragsite set $tixPriv(dd,$w:entry) |
|
set tixPriv(dd,$w:moved) 1 |
|
$dd config -source $w -command [list tixHListSingle:Send:Cmd $w] |
|
$dd startdrag $X $Y |
|
} else { |
|
$dd drag $X $Y |
|
} |
|
} |
|
|
|
proc tixHListSingle:Send:DoneDrag {w x y} { |
|
global tixPriv |
|
global moved |
|
|
|
if {![info exists tixPriv(dd,$w:entry)]} { |
|
return |
|
} |
|
if {$tixPriv(dd,$w:entry) == ""} { |
|
return |
|
} |
|
|
|
if {$tixPriv(dd,$w:moved) == 1} { |
|
set dd [tixGetDragDropContext $w] |
|
$dd drop $X $Y |
|
} |
|
$w dragsite clear |
|
catch {unset tixPriv(dd,$w:moved)} |
|
catch {unset tixPriv(dd,$w:entry)} |
|
} |
|
|
|
proc tixHListSingle:Send:Cmd {w option args} { |
|
set dragCmd [$w cget -dragcmd] |
|
if {$dragCmd != ""} { |
|
return [eval $dragCmd $option $args] |
|
} |
|
|
|
|
|
|
|
case "$option" { |
|
who { |
|
return $w |
|
} |
|
types { |
|
return {data text} |
|
} |
|
get { |
|
global tixPriv |
|
if {[lindex $args 0] == "text"} { |
|
if {$tixPriv(dd,$w:entry) != ""} { |
|
return [$w entrycget $tixPriv(dd,$w:entry) -text] |
|
} |
|
} |
|
if {[lindex $args 0] == "data"} { |
|
if {$tixPriv(dd,$w:entry) != ""} { |
|
return [$w entrycget $tixPriv(dd,$w:entry) -data] |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
proc tixHListSingle:Rec:DragOver {w sender x y} { |
|
if {[$w cget -selectmode] != "dragdrop"} { |
|
return |
|
} |
|
|
|
set ent [tixHListSingle:GetNearest $w $y] |
|
if {$ent != ""} { |
|
$w dropsite set $ent |
|
} else { |
|
$w dropsite clear |
|
} |
|
} |
|
|
|
proc tixHListSingle:Rec:DragIn {w sender x y} { |
|
if {[$w cget -selectmode] != "dragdrop"} { |
|
return |
|
} |
|
set ent [tixHListSingle:GetNearest $w $y] |
|
if {$ent != ""} { |
|
$w dropsite set $ent |
|
} else { |
|
$w dropsite clear |
|
} |
|
} |
|
|
|
proc tixHListSingle:Rec:DragOut {w sender x y} { |
|
if {[$w cget -selectmode] != "dragdrop"} { |
|
return |
|
} |
|
$w dropsite clear |
|
} |
|
|
|
proc tixHListSingle:Rec:Drop {w sender x y} { |
|
if {[$w cget -selectmode] != "dragdrop"} { |
|
return |
|
} |
|
$w dropsite clear |
|
|
|
set ent [tixHListSingle:GetNearest $w $y] |
|
if {$ent != ""} { |
|
$w anchor set $ent |
|
$w select clear |
|
$w select set $ent |
|
} |
|
|
|
set dropCmd [$w cget -dropcmd] |
|
if {$dropCmd != ""} { |
|
eval $dropCmd $sender $x $y |
|
return |
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
tixDropBind TixHListSingle <In> "tixHListSingle:Rec:DragIn %W %S %x %y" |
|
tixDropBind TixHListSingle <Over> "tixHListSingle:Rec:DragOver %W %S %x %y" |
|
tixDropBind TixHListSingle <Out> "tixHListSingle:Rec:DragOut %W %S %x %y" |
|
tixDropBind TixHListSingle <Drop> "tixHListSingle:Rec:Drop %W %S %x %y" |
|
|