@@ -10,7 +10,7 @@ use crate::{
10
10
queue:: { InternalEvent , Queue , StackablePopupOpen } ,
11
11
strings:: { self , order, symbol} ,
12
12
try_or_popup,
13
- ui:: { self , common_nav, style:: SharedTheme } ,
13
+ ui:: { self , common_nav, key2seek , style:: SharedTheme } ,
14
14
AsyncNotification ,
15
15
} ;
16
16
use anyhow:: Result ;
@@ -444,6 +444,11 @@ impl Component for RevisionFilesComponent {
444
444
)
445
445
. order ( order:: RARE_ACTION ) ,
446
446
) ;
447
+ out. push ( CommandInfo :: new (
448
+ strings:: commands:: seek ( & self . key_config ) ,
449
+ self . tree . selected_file ( ) . is_some ( ) ,
450
+ true ,
451
+ ) ) ;
447
452
tree_nav_cmds ( & self . tree , & self . key_config , out) ;
448
453
} else {
449
454
self . current_file . commands ( out, force_all) ;
@@ -480,6 +485,21 @@ impl Component for RevisionFilesComponent {
480
485
self . hide ( ) ;
481
486
return Ok ( EventState :: Consumed ) ;
482
487
}
488
+ } else if key_match ( key, self . key_config . keys . seek_up )
489
+ || key_match ( key, self . key_config . keys . seek_down )
490
+ {
491
+ if is_tree_focused {
492
+ if let Some ( nav) = key2seek ( key, & self . key_config )
493
+ {
494
+ return Ok (
495
+ if self . current_file . scroll ( nav) {
496
+ EventState :: Consumed
497
+ } else {
498
+ EventState :: NotConsumed
499
+ } ,
500
+ ) ;
501
+ }
502
+ }
483
503
} else if key_match ( key, self . key_config . keys . move_right )
484
504
{
485
505
if is_tree_focused {
0 commit comments