Convert mouse row to selectable index
(&self, mouse_row: u16, popup_area: &Rect)
| 277 | |
| 278 | /// Convert mouse row to selectable index |
| 279 | fn selectable_index_at_row(&self, mouse_row: u16, popup_area: &Rect) -> Option<usize> { |
| 280 | let content_start_y = popup_area.y + 2; // border + title |
| 281 | if mouse_row < content_start_y { |
| 282 | return None; |
| 283 | } |
| 284 | let visual_offset = (mouse_row - content_start_y) as usize; |
| 285 | let row_index = self.scroll_offset + visual_offset; |
| 286 | if row_index >= self.rows.len() { |
| 287 | return None; |
| 288 | } |
| 289 | // Find which selectable index this row corresponds to |
| 290 | self.selectable_row_indices |
| 291 | .iter() |
| 292 | .position(|&ri| ri == row_index) |
| 293 | } |
| 294 | |
| 295 | pub fn handle_mouse_event(&mut self, mouse: &MouseEvent) -> Option<ProviderSelection> { |
| 296 | if !self.visible { |
no test coverage detected