home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _8aff06f8f24f5bdded64adaeef5da6f2 < prev    next >
Text File  |  2004-06-01  |  2KB  |  78 lines

  1. # NOTE: Derived from ..\blib\lib\Tk\Listbox.pm.
  2. # Changes made here will be lost when autosplit is run again.
  3. # See AutoSplit.pm.
  4. package Tk::Listbox;
  5.  
  6. #line 552 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\Motion.al)"
  7. # Motion --
  8. #
  9. # This procedure is called to process mouse motion events while
  10. # button 1 is down. It may move or extend the selection, depending
  11. # on the listbox's selection mode.
  12. #
  13. # Arguments:
  14. # w - The listbox widget.
  15. # el - The element under the pointer (must be a number).
  16. sub Motion
  17. {
  18.  my $w = shift;
  19.  my $el = shift;
  20.  if (defined($Prev) && $el == $Prev)
  21.   {
  22.    return;
  23.   }
  24.  my $anchor = $w->index('anchor');
  25.  my $mode = $w->cget('-selectmode');
  26.  if ($mode eq 'browse')
  27.   {
  28.    $w->selectionClear(0,'end');
  29.    $w->selectionSet($el);
  30.    $Prev = $el;
  31.    $w->eventGenerate("<<ListboxSelect>>");
  32.   }
  33.  elsif ($mode eq 'extended')
  34.   {
  35.    my $i = $Prev;
  36.    if (!defined $i || $i eq '')
  37.     {
  38.      $i = $el;
  39.      $w->selectionSet($el);
  40.     }
  41.    if ($w->selectionIncludes('anchor'))
  42.     {
  43.      $w->selectionClear($i,$el);
  44.      $w->selectionSet('anchor',$el)
  45.     }
  46.    else
  47.     {
  48.      $w->selectionClear($i,$el);
  49.      $w->selectionClear('anchor',$el)
  50.     }
  51.    if (!@Selection)
  52.     {
  53.      @Selection = $w->curselection;
  54.     }
  55.    while ($i < $el && $i < $anchor)
  56.     {
  57.      if (Tk::lsearch(\@Selection,$i) >= 0)
  58.       {
  59.        $w->selectionSet($i)
  60.       }
  61.      $i++
  62.     }
  63.    while ($i > $el && $i > $anchor)
  64.     {
  65.      if (Tk::lsearch(\@Selection,$i) >= 0)
  66.       {
  67.        $w->selectionSet($i)
  68.       }
  69.      $i--
  70.     }
  71.    $Prev = $el;
  72.    $w->eventGenerate("<<ListboxSelect>>");
  73.   }
  74. }
  75.  
  76. # end of Tk::Listbox::Motion
  77. 1;
  78.