From 35a14b09ee535bac5b0332bef7dab7cc3acc5b6f Mon Sep 17 00:00:00 2001 From: vrubelroman Date: Wed, 22 Apr 2026 23:26:45 +0300 Subject: [PATCH] Improve text selection preview mode --- internal/ui/model.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/internal/ui/model.go b/internal/ui/model.go index 2096b16..7bbfa82 100644 --- a/internal/ui/model.go +++ b/internal/ui/model.go @@ -311,7 +311,9 @@ func (m Model) View() string { gap := strings.Repeat(" ", m.cfg.UI.PaneGap) var panels string - if m.infoMode { + if m.selectMode && m.infoMode { + panels = renderSelectionPane(m.previewData, &m.previewModel, m.palette, m.width, bodyHeight) + } else if m.infoMode { if m.active == PaneLeft { panels = lipgloss.JoinHorizontal( lipgloss.Top, @@ -949,6 +951,20 @@ func renderPreviewPane(preview vfs.Preview, viewportModel *viewport.Model, cfg c return box.Render(lipgloss.JoinVertical(lipgloss.Left, parts...)) } +func renderSelectionPane(preview vfs.Preview, viewportModel *viewport.Model, palette theme.Palette, width int, height int) string { + content := preview.Body + viewportModel.Width = max(width, 1) + viewportModel.Height = max(height, 1) + viewportModel.SetContent(content) + + return lipgloss.NewStyle(). + Width(width). + Height(height). + Background(palette.Panel). + Foreground(palette.Text). + Render(viewportModel.View()) +} + func renderMetadata(meta vfs.Metadata, palette theme.Palette, width int) string { leftRows := []string{ fmt.Sprintf("kind: %s", fallback(meta.Kind, "n/a")),