fix(prune): honest reclaim/skip counts; cross-ref layout coupling

Already-absent files no longer inflate reclaimedCount (outAlreadyAbsent
distinguishes vanished-at-delete from real failures). Stale skip count
de-dups confirmed before subtraction so duplicates aren't tallied as
stale. prune_button.h rightInset and drawTailFooter vrc.right now
cross-reference each other by name.
This commit is contained in:
2026-07-26 18:59:30 -04:00
parent 7b53ba16f6
commit ef2d3fa846
4 changed files with 54 additions and 22 deletions
+7 -3
View File
@@ -556,8 +556,11 @@ void drawTailFooter(LICE_IBitmap* bmp, int w, int h) {
// matches the left inset; DT_RIGHT keeps it clear of the left-aligned tail label
// (the two never overlap at normal panel widths — the label is short, the readout is
// ~10 chars, and DT_END_ELLIPSIS on both degrades gracefully if a panel is ever tiny).
// COUPLED TO PruneButtonSpec::rightInset (prune_button.h): the prune button is
// right-anchored at footer.right - 84, placing its right edge 76 px left of this
// readout's right margin. If this inset (currently 8) changes, update rightInset there.
RECT vrc = f;
vrc.right -= 8;
vrc.right -= 8; // COUPLED: PruneButtonSpec::rightInset in prune_button.h is 84
SetTextColor(dc, kRgbFooterVersion);
DrawText(dc, reasampler::appVersion().c_str(), -1, &vrc,
DT_RIGHT | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
@@ -567,8 +570,9 @@ void drawTailFooter(LICE_IBitmap* bmp, int w, int h) {
// of truth for both draw and hit-test (they never drift). Empty (button.empty()) when the
// footer is degenerate or too narrow to place the button clear of the tail label — the
// action stays reachable via its bindable command, so a suppressed button is graceful.
// The version readout uses an 8 px right inset (drawTailFooter); the button's rightInset
// clears it (~72 px) so the two never overlap at normal panel widths.
// Clearance from the version readout: PruneButtonSpec::rightInset (84) places the button
// right edge 76 px left of the readout's 8 px right margin — see coupling comments in
// prune_button.h and drawTailFooter above.
ButtonRect pruneButtonRectFor(int w, int h) {
const RECT f = panelFooter(w, h);
if (f.top >= f.bottom) return ButtonRect{}; // degenerate footer -> no button