221 |
my $callback = shift; |
my $callback = shift; |
222 |
confess "expect callback as first arg" unless ref($callback) eq 'CODE'; |
confess "expect callback as first arg" unless ref($callback) eq 'CODE'; |
223 |
|
|
224 |
my @lines = $self->lines; |
my @lines = @{ $self->lines }; |
225 |
|
|
226 |
# find which lines are selectable in input file |
# find which lines are selectable in input file |
227 |
for my $l (0 .. $#lines) { |
for my $l (0 .. $#lines) { |
262 |
# last line on screen? |
# last line on screen? |
263 |
if ( $pos - $top_screen_line == $lines_on_screen ) { |
if ( $pos - $top_screen_line == $lines_on_screen ) { |
264 |
$top_screen_line += $lines_on_screen; |
$top_screen_line += $lines_on_screen; |
265 |
$top_screen_line = $#lines - $lines_on_screen if $top_screen_line >= $#lines - $lines_on_screen; |
|
266 |
|
my $max_top_screen_line = |
267 |
|
$nr_lines > $lines_on_screen ? $nr_lines - $lines_on_screen : 0; |
268 |
|
|
269 |
|
$top_screen_line = $max_top_screen_line if $top_screen_line > $max_top_screen_line; |
270 |
|
warn "max_top_screen_line = $max_top_screen_line top_screen_line = $top_screen_line\n"; |
271 |
$self->redraw_screen; |
$self->redraw_screen; |
272 |
} |
} |
273 |
$self->selected( $top_screen_line + $lines_on_screen - $pos ); |
$self->selected( $top_screen_line + $lines_on_screen - $pos ); |