Index: listbox.tcl
===================================================================
RCS file: /cvsroot/tcllib/bwidget/listbox.tcl,v
retrieving revision 1.8
diff -r1.8 listbox.tcl
159,164c159,164
< 	    $path bindText <Button-1>         [list ListBox::_multiple_select $path n]
< 	    $path bindText <Control-Button-1> [list ListBox::_multiple_select $path c]
< 	    $path bindText <Shift-Button-1>   [list ListBox::_multiple_select $path s]
< 	    $path bindImage <Button-1>         [list ListBox::_multiple_select $path n]
< 	    $path bindImage <Control-Button-1> [list ListBox::_multiple_select $path c]
< 	    $path bindImage <Shift-Button-1>   [list ListBox::_multiple_select $path s]
---
> 	    $path bindText <Button-1>         [list ListBox::_multiple_select $path n %x %y]
> 	    $path bindText <Control-Button-1> [list ListBox::_multiple_select $path c %x %y]
> 	    $path bindText <Shift-Button-1>   [list ListBox::_multiple_select $path s %x %y]
> 	    $path bindImage <Button-1>         [list ListBox::_multiple_select $path n %x %y]
> 	    $path bindImage <Control-Button-1> [list ListBox::_multiple_select $path c %x %y]
> 	    $path bindImage <Shift-Button-1>   [list ListBox::_multiple_select $path s %x %y]
1287a1288,1323
>     set xmax   [winfo width  $path]
>     set ymax   [winfo height $path]
>     set scroll {}
>     if { $y <= 6 } {
>         if { [lindex [$path.c yview] 0] > 0 } {
>             set scroll [list yview -1]
>             DropSite::setcursor sb_up_arrow
>         }
>     } elseif { $y >= $ymax-6 } {
>         if { [lindex [$path.c yview] 1] < 1 } {
>             set scroll [list yview 1]
>             DropSite::setcursor sb_down_arrow
>         }
>     } elseif { $x <= 6 } {
>         if { [lindex [$path.c xview] 0] > 0 } {
>             set scroll [list xview -1]
>             DropSite::setcursor sb_left_arrow
>         }
>     } elseif { $x >= $xmax-6 } {
>         if { [lindex [$path.c xview] 1] < 1 } {
>             set scroll [list xview 1]
>             DropSite::setcursor sb_right_arrow
>         }
>     }
> 
>     if { [string length $data(dnd,afterid)] && [string compare $data(dnd,scroll) $scroll] } {
>         after cancel $data(dnd,afterid)
>         set data(dnd,afterid) ""
>     }
> 
>     set data(dnd,scroll) $scroll
>     if { [llength $scroll] && ![string length $data(dnd,afterid)] } {
>         set data(dnd,afterid) [after 200 ListBox::_scroll $path $scroll]
>     }
>     return $data(dnd,afterid)
> 
1293c1329
< proc ListBox::_multiple_select { path mode idx } {
---
> proc ListBox::_multiple_select { path mode x y idx } {
1341,1376d1376
< 
<     set xmax   [winfo width  $path]
<     set ymax   [winfo height $path]
<     set scroll {}
<     if { $y <= 6 } {
<         if { [lindex [$path.c yview] 0] > 0 } {
<             set scroll [list yview -1]
<             DropSite::setcursor sb_up_arrow
<         }
<     } elseif { $y >= $ymax-6 } {
<         if { [lindex [$path.c yview] 1] < 1 } {
<             set scroll [list yview 1]
<             DropSite::setcursor sb_down_arrow
<         }
<     } elseif { $x <= 6 } {
<         if { [lindex [$path.c xview] 0] > 0 } {
<             set scroll [list xview -1]
<             DropSite::setcursor sb_left_arrow
<         }
<     } elseif { $x >= $xmax-6 } {
<         if { [lindex [$path.c xview] 1] < 1 } {
<             set scroll [list xview 1]
<             DropSite::setcursor sb_right_arrow
<         }
<     }
< 
<     if { [string length $data(dnd,afterid)] && [string compare $data(dnd,scroll) $scroll] } {
<         after cancel $data(dnd,afterid)
<         set data(dnd,afterid) ""
<     }
< 
<     set data(dnd,scroll) $scroll
<     if { [llength $scroll] && ![string length $data(dnd,afterid)] } {
<         set data(dnd,afterid) [after 200 ListBox::_scroll $path $scroll]
<     }
<     return $data(dnd,afterid)
