@@ -8,7 +8,7 @@ use crate::{
8
8
} ;
9
9
use asyncgit:: { hash, DiffLine , DiffLineType , FileDiff } ;
10
10
use crossterm:: event:: Event ;
11
- use std:: { borrow:: Cow , cmp, convert :: TryFrom } ;
11
+ use std:: { borrow:: Cow , cmp} ;
12
12
use strings:: commands;
13
13
use tui:: {
14
14
backend:: Backend ,
@@ -30,11 +30,11 @@ struct Current {
30
30
///
31
31
pub struct DiffComponent {
32
32
diff : FileDiff ,
33
- scroll : u16 ,
33
+ scroll : usize ,
34
34
current_height : u16 ,
35
35
focused : bool ,
36
36
current : Current ,
37
- selected_hunk : Option < u16 > ,
37
+ selected_hunk : Option < usize > ,
38
38
queue : Queue ,
39
39
theme : Theme ,
40
40
}
@@ -100,18 +100,18 @@ impl DiffComponent {
100
100
fn scroll ( & mut self , scroll : ScrollType ) -> Result < ( ) > {
101
101
let old = self . scroll ;
102
102
103
- let scroll_max = self . diff . lines . saturating_sub ( 1 ) ;
103
+ let scroll_max = self . diff . lines . saturating_sub ( 1 ) as usize ;
104
104
105
105
self . scroll = match scroll {
106
106
ScrollType :: Down => self . scroll . saturating_add ( 1 ) ,
107
107
ScrollType :: Up => self . scroll . saturating_sub ( 1 ) ,
108
108
ScrollType :: Home => 0 ,
109
109
ScrollType :: End => scroll_max,
110
110
ScrollType :: PageDown => self . scroll . saturating_add (
111
- self . current_height . saturating_sub ( 1 ) ,
111
+ self . current_height . saturating_sub ( 1 ) as usize ,
112
112
) ,
113
113
ScrollType :: PageUp => self . scroll . saturating_sub (
114
- self . current_height . saturating_sub ( 1 ) ,
114
+ self . current_height . saturating_sub ( 1 ) as usize ,
115
115
) ,
116
116
} ;
117
117
@@ -127,19 +127,19 @@ impl DiffComponent {
127
127
128
128
fn find_selected_hunk (
129
129
diff : & FileDiff ,
130
- line_selected : u16 ,
131
- ) -> Result < Option < u16 > > {
132
- let mut line_cursor = 0_u16 ;
130
+ line_selected : usize ,
131
+ ) -> Result < Option < usize > > {
132
+ let mut line_cursor = 0_usize ;
133
133
for ( i, hunk) in diff. hunks . iter ( ) . enumerate ( ) {
134
- let hunk_len = u16 :: try_from ( hunk. lines . len ( ) ) ? ;
134
+ let hunk_len = hunk. lines . len ( ) ;
135
135
let hunk_min = line_cursor;
136
136
let hunk_max = line_cursor + hunk_len;
137
137
138
138
let hunk_selected =
139
139
hunk_min <= line_selected && hunk_max > line_selected;
140
140
141
141
if hunk_selected {
142
- return Ok ( Some ( u16 :: try_from ( i ) ? ) ) ;
142
+ return Ok ( Some ( i ) ) ;
143
143
}
144
144
145
145
line_cursor += hunk_len;
@@ -150,25 +150,23 @@ impl DiffComponent {
150
150
151
151
fn get_text ( & self , width : u16 , height : u16 ) -> Result < Vec < Text > > {
152
152
let selection = self . scroll ;
153
- let height_d2 = height / 2 ;
153
+ let height_d2 = ( height / 2 ) as usize ;
154
154
let min = self . scroll . saturating_sub ( height_d2) ;
155
- let max = min + height;
155
+ let max = min + height as usize ;
156
156
157
157
let mut res = Vec :: new ( ) ;
158
- let mut line_cursor = 0_u16 ;
159
- let mut lines_added = 0_u16 ;
158
+ let mut line_cursor = 0_usize ;
159
+ let mut lines_added = 0_usize ;
160
160
161
161
for ( i, hunk) in self . diff . hunks . iter ( ) . enumerate ( ) {
162
162
let hunk_selected =
163
- self . selected_hunk . map_or ( false , |s| {
164
- s == u16:: try_from ( i) . unwrap_or_default ( )
165
- } ) ;
163
+ self . selected_hunk . map_or ( false , |s| s == i) ;
166
164
167
- if lines_added >= height {
165
+ if lines_added >= height as usize {
168
166
break ;
169
167
}
170
168
171
- let hunk_len = u16 :: try_from ( hunk. lines . len ( ) ) ? ;
169
+ let hunk_len = hunk. lines . len ( ) ;
172
170
let hunk_min = line_cursor;
173
171
let hunk_max = line_cursor + hunk_len;
174
172
@@ -193,6 +191,7 @@ impl DiffComponent {
193
191
line_cursor += hunk_len;
194
192
}
195
193
}
194
+
196
195
Ok ( res)
197
196
}
198
197
@@ -247,10 +246,10 @@ impl DiffComponent {
247
246
}
248
247
249
248
fn hunk_visible (
250
- hunk_min : u16 ,
251
- hunk_max : u16 ,
252
- min : u16 ,
253
- max : u16 ,
249
+ hunk_min : usize ,
250
+ hunk_max : usize ,
251
+ min : usize ,
252
+ max : usize ,
254
253
) -> bool {
255
254
// full overlap
256
255
if hunk_min <= min && hunk_max >= max {
@@ -269,7 +268,7 @@ impl DiffComponent {
269
268
270
269
fn add_hunk ( & self ) -> Result < ( ) > {
271
270
if let Some ( hunk) = self . selected_hunk {
272
- let hash = self . diff . hunks [ usize :: from ( hunk) ] . header_hash ;
271
+ let hash = self . diff . hunks [ hunk] . header_hash ;
273
272
self . queue
274
273
. borrow_mut ( )
275
274
. push_back ( InternalEvent :: AddHunk ( hash) ) ;
0 commit comments