mirror of
https://github.com/tw93/Mole.git
synced 2026-03-22 20:15:07 +00:00
Merge pull request #606 from teee32/fix/status-resize-ghost-lines
refactor(status): extract view height padding helper
This commit is contained in:
@@ -59,6 +59,21 @@ type model struct {
|
|||||||
catHidden bool // true = hidden, false = visible
|
catHidden bool // true = hidden, false = visible
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// padViewToHeight ensures the rendered frame always overwrites the full
|
||||||
|
// terminal region by padding with empty lines up to the current height.
|
||||||
|
func padViewToHeight(view string, height int) string {
|
||||||
|
if height <= 0 {
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
|
contentHeight := lipgloss.Height(view)
|
||||||
|
if contentHeight >= height {
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
|
return view + strings.Repeat("\n", height-contentHeight)
|
||||||
|
}
|
||||||
|
|
||||||
// getConfigPath returns the path to the status preferences file.
|
// getConfigPath returns the path to the status preferences file.
|
||||||
func getConfigPath() string {
|
func getConfigPath() string {
|
||||||
home, err := os.UserHomeDir()
|
home, err := os.UserHomeDir()
|
||||||
@@ -194,17 +209,7 @@ func (m model) View() string {
|
|||||||
}
|
}
|
||||||
parts = append(parts, cardContent)
|
parts = append(parts, cardContent)
|
||||||
output := lipgloss.JoinVertical(lipgloss.Left, parts...)
|
output := lipgloss.JoinVertical(lipgloss.Left, parts...)
|
||||||
|
return padViewToHeight(output, m.height)
|
||||||
// Pad output to exactly fill the terminal height so every frame fully
|
|
||||||
// overwrites the alt screen buffer, preventing ghost lines on resize.
|
|
||||||
if m.height > 0 {
|
|
||||||
contentHeight := lipgloss.Height(output)
|
|
||||||
if contentHeight < m.height {
|
|
||||||
output += strings.Repeat("\n", m.height-contentHeight)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return output
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m model) collectCmd() tea.Cmd {
|
func (m model) collectCmd() tea.Cmd {
|
||||||
|
|||||||
@@ -84,7 +84,10 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "should_protect_path protects Mole runtime logs" {
|
@test "should_protect_path protects Mole runtime logs" {
|
||||||
result="$(HOME="$HOME" bash --noprofile --norc -c "source '$PROJECT_ROOT/lib/core/common.sh'; should_protect_path '$HOME/Library/Logs/mole/operations.log' && echo protected || echo not-protected")"
|
result="$(
|
||||||
|
HOME="$HOME" PROJECT_ROOT="$PROJECT_ROOT" bash --noprofile --norc -c \
|
||||||
|
'source "$PROJECT_ROOT/lib/core/common.sh"; should_protect_path "$HOME/Library/Logs/mole/operations.log" && echo protected || echo not-protected'
|
||||||
|
)"
|
||||||
[ "$result" = "protected" ]
|
[ "$result" = "protected" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,7 +244,7 @@ EOF
|
|||||||
|
|
||||||
PATH="$fake_bin:$PATH" PROJECT_ROOT="$PROJECT_ROOT" HOME="$HOME" \
|
PATH="$fake_bin:$PATH" PROJECT_ROOT="$PROJECT_ROOT" HOME="$HOME" \
|
||||||
/usr/bin/script -q /dev/null /bin/bash --noprofile --norc -c \
|
/usr/bin/script -q /dev/null /bin/bash --noprofile --norc -c \
|
||||||
'source "$PROJECT_ROOT/lib/core/common.sh"; start_inline_spinner "Testing..."; /bin/sleep 0.15; stop_inline_spinner' \
|
"source \"\$PROJECT_ROOT/lib/core/common.sh\"; start_inline_spinner \"Testing...\"; /bin/sleep 0.15; stop_inline_spinner" \
|
||||||
> /dev/null 2>&1
|
> /dev/null 2>&1
|
||||||
|
|
||||||
[ ! -f "$marker" ]
|
[ ! -f "$marker" ]
|
||||||
|
|||||||
Reference in New Issue
Block a user