@@ -600,8 +600,9 @@ void ui_browser__write_graph(struct ui_browser *browser __used, int graph)
600
600
SLsmg_set_char_set (0 );
601
601
}
602
602
603
- void __ui_browser__line_arrow_up (struct ui_browser * browser , unsigned int column ,
604
- u64 start , u64 end , int start_width )
603
+ static void __ui_browser__line_arrow_up (struct ui_browser * browser ,
604
+ unsigned int column ,
605
+ u64 start , u64 end , int start_width )
605
606
{
606
607
unsigned int row , end_row ;
607
608
@@ -639,6 +640,55 @@ void __ui_browser__line_arrow_up(struct ui_browser *browser, unsigned int column
639
640
SLsmg_set_char_set (0 );
640
641
}
641
642
643
+ static void __ui_browser__line_arrow_down (struct ui_browser * browser ,
644
+ unsigned int column ,
645
+ u64 start , u64 end , int start_width )
646
+ {
647
+ unsigned int row , end_row ;
648
+
649
+ SLsmg_set_char_set (1 );
650
+
651
+ if (start >= browser -> top_idx ) {
652
+ row = start - browser -> top_idx ;
653
+ ui_browser__gotorc (browser , row , column );
654
+ SLsmg_write_char (SLSMG_ULCORN_CHAR );
655
+ ui_browser__gotorc (browser , row , column + 1 );
656
+ SLsmg_draw_hline (start_width );
657
+
658
+ if (row ++ == 0 )
659
+ goto out ;
660
+ } else
661
+ row = 0 ;
662
+
663
+ if (end >= browser -> top_idx + browser -> height )
664
+ end_row = browser -> height - 1 ;
665
+ else
666
+ end_row = end - browser -> top_idx ;;
667
+
668
+ ui_browser__gotorc (browser , row , column );
669
+ SLsmg_draw_vline (end_row - row + 1 );
670
+
671
+ ui_browser__gotorc (browser , end_row , column );
672
+ if (end < browser -> top_idx + browser -> height ) {
673
+ SLsmg_write_char (SLSMG_LLCORN_CHAR );
674
+ ui_browser__gotorc (browser , end_row , column + 1 );
675
+ SLsmg_write_char (SLSMG_HLINE_CHAR );
676
+ ui_browser__gotorc (browser , end_row , column + 2 );
677
+ SLsmg_write_char (SLSMG_RARROW_CHAR );
678
+ }
679
+ out :
680
+ SLsmg_set_char_set (0 );
681
+ }
682
+
683
+ void __ui_browser__line_arrow (struct ui_browser * browser , unsigned int column ,
684
+ u64 start , u64 end , int start_width )
685
+ {
686
+ if (start > end )
687
+ __ui_browser__line_arrow_up (browser , column , start , end , start_width );
688
+ else
689
+ __ui_browser__line_arrow_down (browser , column , start , end , start_width );
690
+ }
691
+
642
692
void ui_browser__init (void )
643
693
{
644
694
int i = 0 ;
0 commit comments