}
else
{
- seqIndex = Math.min((y / charHeight) + av.getRanges().getStartSeq(),
+ ViewportRanges ranges = av.getRanges();
+ seqIndex = Math.min((y / charHeight) + ranges.getStartSeq(),
alignmentHeight - 1);
+ seqIndex = Math.min(seqIndex, ranges.getEndSeq());
}
return new MousePos(col, seqIndex, annIndex);
@Override
public void mouseExited(MouseEvent e)
{
+ lastMousePosition = null;
ap.alignFrame.setStatus(" ");
if (av.getWrapAlignment())
{
{
scrollThread = new ScrollThread();
scrollThread.setMousePosition(mousePos);
- if (!Platform.isJS())
- {
- /*
- * Java - run in a new thread
- */
- scrollThread.start();
- }
- else
+ if (Platform.isJS())
{
/*
* Javascript - run every 20ms until scrolling stopped
* or reaches the limit of scrollable alignment
*/
- // java.util.Timer version:
- // Timer t = new Timer("ScrollThreadTimer", true);
- // TimerTask task = new TimerTask()
- // {
- // @Override
- // public void run()
- // {
- // if (!scrollThread.scrollOnce())
- // {
- // cancel();
- // }
- // }
- // };
- // t.schedule(task, 20, 20);
Timer t = new Timer(20, new ActionListener()
{
@Override
{
if (scrollThread == null)
{
- // finished and nulled itself
+ // SeqPanel.stopScrolling called
t.stop();
}
}
t.start();
}
}
+ else
+ {
+ /*
+ * Java - run in a new thread
+ */
+ scrollThread.start();
+ }
}
/**