v0.31.6: album art inside the playlists' frame; text and playhead lifted 2px

The playlist list and the album art under it share one frame (the list's
own style, drawn around both), and the no-art placeholder is a shade
lighter than that frame line so the line still reads around it. The
playlist name, times and playhead sit 2px up (HeaderRow.LIFT), on the
Library button's bottom line by eye.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-28 23:36:48 -07:00
co-authored by Claude Opus 5.5
parent 6f50248202
commit 8ffec1be82
4 changed files with 32 additions and 11 deletions
+5 -2
View File
@@ -52,6 +52,8 @@ def test_library_button_spans_the_playlist_list(qapp, tmp_path):
window = _window(qapp, tmp_path)
header = window.sidebar.header
lists = window.sidebar.list_area
# The frame around the playlists takes in the album art too.
assert window.sidebar.art.parentWidget() is lists
assert header.parentWidget() is not window.sidebar
assert _gx(header) == _gx(lists) > _gx(window)
assert header.width() == lists.width()
@@ -71,12 +73,13 @@ def test_header_row_items_share_one_floor(qapp, tmp_path):
assert bottom(window.sidebar.library_button) == floor
assert bottom(window._library_view._search) == floor
assert bottom(window._transport._slider) == floor
# Text and the playhead sit LIFT px up, on the button's bottom line by eye.
assert bottom(window._transport._slider) == floor - HeaderRow.LIFT
window._show_playlist("abcd1234")
qapp.processEvents()
label = window._playlist_view.header
baseline = bottom(label) - label.fontMetrics().descent()
assert abs(baseline - floor) <= 1
assert abs(baseline - (floor - HeaderRow.LIFT)) <= 1
def test_search_then_title_sit_where_the_view_starts(qapp, tmp_path):