@@ -408,39 +408,28 @@ impl FunctionDiffUi {
408
408
// Quit
409
409
KeyCode :: Esc | KeyCode :: Char ( 'q' ) => return FunctionDiffResult :: Break ,
410
410
// Page up
411
- KeyCode :: PageUp => {
412
- self . scroll_y = self . scroll_y . saturating_sub ( self . per_page ) ;
413
- self . redraw = true ;
414
- }
411
+ KeyCode :: PageUp => self . page_up ( false ) ,
415
412
// Page up (shift + space)
416
413
KeyCode :: Char ( ' ' ) if event. modifiers . contains ( KeyModifiers :: SHIFT ) => {
417
- self . scroll_y = self . scroll_y . saturating_sub ( self . per_page ) ;
418
- self . redraw = true ;
414
+ self . page_up ( false )
419
415
}
420
416
// Page down
421
- KeyCode :: Char ( ' ' ) | KeyCode :: PageDown => {
422
- self . scroll_y += self . per_page ;
423
- self . redraw = true ;
424
- }
417
+ KeyCode :: Char ( ' ' ) | KeyCode :: PageDown => self . page_down ( false ) ,
425
418
// Page down (ctrl + f)
426
419
KeyCode :: Char ( 'f' ) if event. modifiers . contains ( KeyModifiers :: CONTROL ) => {
427
- self . scroll_y += self . per_page ;
428
- self . redraw = true ;
420
+ self . page_down ( false )
429
421
}
430
422
// Page up (ctrl + b)
431
423
KeyCode :: Char ( 'b' ) if event. modifiers . contains ( KeyModifiers :: CONTROL ) => {
432
- self . scroll_y = self . scroll_y . saturating_sub ( self . per_page ) ;
433
- self . redraw = true ;
424
+ self . page_up ( false )
434
425
}
435
426
// Half page down (ctrl + d)
436
427
KeyCode :: Char ( 'd' ) if event. modifiers . contains ( KeyModifiers :: CONTROL ) => {
437
- self . scroll_y += self . per_page / 2 ;
438
- self . redraw = true ;
428
+ self . page_down ( true )
439
429
}
440
430
// Half page up (ctrl + u)
441
431
KeyCode :: Char ( 'u' ) if event. modifiers . contains ( KeyModifiers :: CONTROL ) => {
442
- self . scroll_y = self . scroll_y . saturating_sub ( self . per_page / 2 ) ;
443
- self . redraw = true ;
432
+ self . page_up ( true )
444
433
}
445
434
// Scroll down
446
435
KeyCode :: Down | KeyCode :: Char ( 'j' ) => {
@@ -517,6 +506,16 @@ impl FunctionDiffUi {
517
506
FunctionDiffResult :: Continue
518
507
}
519
508
509
+ fn page_up ( & mut self , half : bool ) {
510
+ self . scroll_y = self . scroll_y . saturating_sub ( self . per_page / if half { 2 } else { 1 } ) ;
511
+ self . redraw = true ;
512
+ }
513
+
514
+ fn page_down ( & mut self , half : bool ) {
515
+ self . scroll_y += self . per_page / if half { 2 } else { 1 } ;
516
+ self . redraw = true ;
517
+ }
518
+
520
519
fn print_sym (
521
520
& self ,
522
521
out : & mut Text ,
0 commit comments