irongit

feat: reorder focus list

huncholanehuncholaneauthored
parent 626935ccommit f7f799669e12096a38b72ce69641684dab3b1627Browse files

1 file changed, +18 -0

+18-0src/views/browser.rs
@@ -174,6 +174,24 @@ impl BrowserView {
174174 // Build entries for current + parent level
175175 let in_focus_root = self.focus_mode && self.path.is_empty() && !self.focused.is_empty();
176176
177+ // Handle focus reorder BEFORE building entries so they're in sync
178+ if in_focus_root {
179+ let move_up = ui.input_mut(|i| i.consume_key(egui::Modifiers::CTRL, egui::Key::K))
180+ || ui.input_mut(|i| i.consume_key(egui::Modifiers::CTRL, egui::Key::ArrowUp));
181+ let move_down = ui.input_mut(|i| i.consume_key(egui::Modifiers::CTRL, egui::Key::J))
182+ || ui.input_mut(|i| i.consume_key(egui::Modifiers::CTRL, egui::Key::ArrowDown));
183+ if move_up && self.selection > 0 {
184+ self.focused.swap(self.selection, self.selection - 1);
185+ self.selection -= 1;
186+ self.focus_dirty = true;
187+ }
188+ if move_down && self.selection + 1 < self.focused.len() {
189+ self.focused.swap(self.selection, self.selection + 1);
190+ self.selection += 1;
191+ self.focus_dirty = true;
192+ }
193+ }
194+
177195 let (current_entries, parent_entries) = if in_focus_root {
178196 // Focus mode root: show pinned items as the root list
179197 let entries: Vec<Entry> = self.focused.iter().map(|fp| {