} elsif ($key eq ">" && $file_window_width > 1) {
$file_window_width--;
recalc_windows;
+ } elsif ($key eq "j") {
+ $file_window->key(KEY_DOWN);
+ } elsif ($key eq "k") {
+ $file_window->key(KEY_UP);
+ } elsif ($key eq "h") {
+ $file_window->key(KEY_LEFT);
+ } elsif ($key eq "l") {
+ $file_window->key(KEY_RIGHT);
} else {
$focused_window->key($key);
}
sub redraw($) {
my $w = shift @_;
- $w->{"win"}->idlok(1);
+ my $win = $w->{"win"};
+ # Window size might have changed...
+ if ($w->{"1st"} + $w->{"h"} > $w->{"n"}) { $w->{"1st"} = $w->{"n"} - $w->{"h"}; }
+ if ($w->{"1st"} < 0) { $w->{"1st"} = 0; }
+ $win->idlok(1);
for (my $i=0; $i<$w->{"h"}; $i++) {
$w->redraw_line($w->{"1st"} + $i);
}
- $w->{"win"}->noutrefresh;
+ $win->noutrefresh;
}
sub go($$) {
for (my $i=0; $i<$w->{"n"}; $i++) {
if ($w->{"flist"}->[$i] eq $back) {
$w->{"i"} = $i;
- if ($i > $w->{"h"}/2) { $w->{"1st"} = $i - int($w->{"h"}/2); }
- if ($w->{"1st"} + $w->{"h"} > $w->{"n"}) { $w->{"1st"} = $w->{"n"} - $w->{"h"}; }
- if ($w->{"1st"} < 0) { $w->{"1st"} = 0; }
+ $w->{"1st"} = $i - int($w->{"h"}/2);
last;
}
}