on master help sign in
Render the preview in FilePicker
15cc09fGokul Soumya
helix-term/src/ui/picker.rs+24−26
@@ -656,44 +656,21 @@ impl<T: Item + 'static> FilePicker<T> {
656 }
656 }
657
657
658 fn render_preview(&mut self, area: Rect, surface: &mut Surface, cx: &mut Context) {
658 fn render_preview(&mut self, area: Rect, surface: &mut Surface, cx: &mut Context) {
659− // +---------+ +---------+
660− // |prompt | |preview |
661− // +---------+ | |
662− // |picker | | |
663− // | | | |
664− // +---------+ +---------+
665−
666− let render_preview = self.picker.show_preview && area.width > MIN_AREA_WIDTH_FOR_PREVIEW;
667 // -- Render the frame:
659 // -- Render the frame:
668 // clear area
660 // clear area
669 let background = cx.editor.theme.get("ui.background");
661 let background = cx.editor.theme.get("ui.background");
670 let text = cx.editor.theme.get("ui.text");
662 let text = cx.editor.theme.get("ui.text");
671 surface.clear_with(area, background);
663 surface.clear_with(area, background);
672
664
673− let picker_width = if render_preview {
674− area.width / 2
675− } else {
676− area.width
677− };
678−
679− let picker_area = area.with_width(picker_width);
680− self.picker.render(picker_area, surface, cx);
681−
682− if !render_preview {
683− return;
684− }
685−
686− let preview_area = area.clip_left(picker_width);
687−
688 // don't like this but the lifetime sucks
665 // don't like this but the lifetime sucks
689 let block = Block::default().borders(Borders::ALL);
666 let block = Block::default().borders(Borders::ALL);
690
667
691 // calculate the inner area inside the box
668 // calculate the inner area inside the box
692− let inner = block.inner(preview_area);
669+ let inner = block.inner(area);
693 // 1 column gap on either side
670 // 1 column gap on either side
694 let margin = Margin::horizontal(1);
671 let margin = Margin::horizontal(1);
695 let inner = inner.inner(&margin);
672 let inner = inner.inner(&margin);
696− block.render(preview_area, surface);
673+ block.render(area, surface);
697
674
698 if let Some((path, range)) = self.current_file(cx.editor) {
675 if let Some((path, range)) = self.current_file(cx.editor) {
699 let preview = self.get_preview(path, cx.editor);
676 let preview = self.get_preview(path, cx.editor);
@@ -873,7 +850,28 @@ impl<T: Item + 'static> FilePicker<T> {
873
850
874impl<T: Item + 'static> Component for FilePicker<T> {
851impl<T: Item + 'static> Component for FilePicker<T> {
875 fn render(&mut self, area: Rect, surface: &mut Surface, cx: &mut Context) {
852 fn render(&mut self, area: Rect, surface: &mut Surface, cx: &mut Context) {
853+ // +---------+ +---------+
854+ // |prompt | |preview |
855+ // +---------+ | |
856+ // |picker | | |
857+ // | | | |
858+ // +---------+ +---------+
859+
860+ let render_preview = self.picker.show_preview && area.width > MIN_AREA_WIDTH_FOR_PREVIEW;
861+
862+ let picker_width = if render_preview {
863+ area.width / 2
864+ } else {
865+ area.width
866+ };
867+
868+ let picker_area = area.with_width(picker_width);
876− self.render_picker(area, surface, cx);
869+ self.render_picker(picker_area, surface, cx);
870+
871+ if render_preview {
872+ let preview_area = area.clip_left(picker_width);
873+ self.render_preview(preview_area, surface, cx);
874+ }
877 }
875 }
878}
876}
879
877