mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-29 09:22:18 -07:00
Removed minimized version of the vertical stacking behaviour
The overflow function covers the necessary edge case, the minimized branch of it was an artefact of earlier builds
This commit is contained in:
parent
ae37762ee1
commit
1310ca9bbd
1 changed files with 23 additions and 31 deletions
|
|
@ -21,40 +21,32 @@ SelectZone::ZoneLayout SelectZone::computeZoneLayout(const StackLayoutParams &pa
|
|||
}
|
||||
qreal effectiveOffset = params.desiredOffset;
|
||||
if (params.cardCount > 1) {
|
||||
qreal fitOffset;
|
||||
if (params.totalHeight < params.cardHeight && params.minOffset > 0.0) {
|
||||
// Zone is shorter than a card (e.g. minimized). Compress offsets so
|
||||
// every card has at least minOffset pixels of its top visible.
|
||||
fitOffset = (params.totalHeight - params.minOffset) / (params.cardCount - 1);
|
||||
effectiveOffset = qMax(0.0, qMin(params.desiredOffset, fitOffset));
|
||||
qreal reservedForBottomCard;
|
||||
if (params.allowBottomOverflow) {
|
||||
// Allow the bottom card to partially overflow in tight zones, scaling the
|
||||
// overflow allowance by sqrt(cardCount-1) so offsets decrease smoothly
|
||||
// as cards are added rather than dropping by 1/(n-1) each time.
|
||||
// The 0.75 ratio was tuned experimentally to balance card visibility vs. overflow.
|
||||
constexpr qreal bottomCardZoneRatio = 0.75;
|
||||
const qreal adjustedRatio = bottomCardZoneRatio / qSqrt(static_cast<qreal>(params.cardCount - 1));
|
||||
reservedForBottomCard = qMin(params.cardHeight, params.totalHeight * adjustedRatio);
|
||||
} else {
|
||||
qreal reservedForBottomCard;
|
||||
if (params.allowBottomOverflow) {
|
||||
// Allow the bottom card to partially overflow in tight zones, scaling the
|
||||
// overflow allowance by sqrt(cardCount-1) so offsets decrease smoothly
|
||||
// as cards are added rather than dropping by 1/(n-1) each time.
|
||||
// The 0.75 ratio was tuned experimentally to balance card visibility vs. overflow.
|
||||
constexpr qreal bottomCardZoneRatio = 0.75;
|
||||
const qreal adjustedRatio = bottomCardZoneRatio / qSqrt(static_cast<qreal>(params.cardCount - 1));
|
||||
reservedForBottomCard = qMin(params.cardHeight, params.totalHeight * adjustedRatio);
|
||||
} else {
|
||||
// No overflow: reserve full card height for the bottom card
|
||||
reservedForBottomCard = params.cardHeight;
|
||||
}
|
||||
fitOffset = (params.totalHeight - reservedForBottomCard) / (params.cardCount - 1);
|
||||
// No overflow: reserve full card height for the bottom card
|
||||
reservedForBottomCard = params.cardHeight;
|
||||
}
|
||||
qreal fitOffset = (params.totalHeight - reservedForBottomCard) / (params.cardCount - 1);
|
||||
|
||||
if (!params.allowBottomOverflow) {
|
||||
// Constrain offset so all card tops remain within zone bounds.
|
||||
// With start=0, last card top at (cardCount-1) * effectiveOffset must be < totalHeight.
|
||||
qreal maxOffsetForTops = params.totalHeight / (params.cardCount - 1);
|
||||
fitOffset = qMin(fitOffset, maxOffsetForTops);
|
||||
}
|
||||
if (!params.allowBottomOverflow) {
|
||||
// Constrain offset so all card tops remain within zone bounds.
|
||||
// With start=0, last card top at (cardCount-1) * effectiveOffset must be < totalHeight.
|
||||
qreal maxOffsetForTops = params.totalHeight / (params.cardCount - 1);
|
||||
fitOffset = qMin(fitOffset, maxOffsetForTops);
|
||||
}
|
||||
|
||||
// Apply minOffset only if it fits; otherwise compress further to keep all card tops visible.
|
||||
effectiveOffset = qMin(params.desiredOffset, fitOffset);
|
||||
if (fitOffset >= params.minOffset) {
|
||||
effectiveOffset = qMax(params.minOffset, effectiveOffset);
|
||||
}
|
||||
// Apply minOffset only if it fits; otherwise compress further to keep all card tops visible.
|
||||
effectiveOffset = qMin(params.desiredOffset, fitOffset);
|
||||
if (fitOffset >= params.minOffset) {
|
||||
effectiveOffset = qMax(params.minOffset, effectiveOffset);
|
||||
}
|
||||
}
|
||||
qreal stackHeight = (params.cardCount - 1) * effectiveOffset + params.cardHeight;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue