clean-up plugin files
C++ / fmt (pull_request) Successful in 9s
JS/TS / fmt (pull_request) Successful in 11s
JS/TS / lint (pull_request) Successful in 15s
Python / static (pull_request) Successful in 55s
Rust / fmt (pull_request) Successful in 32s
Rust / build (pull_request) Successful in 1m52s
C++ / build (pull_request) Successful in 3m56s
Rust / clippy (pull_request) Successful in 1m30s
Python / verify (pull_request) Successful in 3m3s
C++ / clang-tidy (pull_request) Successful in 5m20s

This commit is contained in:
2026-08-16 20:29:48 +02:00
parent 4e75f21446
commit 43f070f887
@@ -199,20 +199,10 @@ void CarouselView::setMaxWidth(qreal v) {
emit maxWidthChanged(); emit maxWidthChanged();
/*
* Advertise the target width immediately.
*
* The parent QML object can then animate its own implicitWidth
* immediately instead of waiting for the delegate geometry.
*/
const qreal targetWidth = targetWidthForMaxWidth(m_maxWidth); const qreal targetWidth = targetWidthForMaxWidth(m_maxWidth);
setImplicitWidth(targetWidth); setImplicitWidth(targetWidth);
/*
* Grow the instantiated delegate pool if the new maximum needs
* more items. Never throw them away during a resize.
*/
m_layoutCapacity = m_layoutCapacity =
qMax(m_layoutCapacity, layoutCapacityForWidth(m_maxWidth)); qMax(m_layoutCapacity, layoutCapacityForWidth(m_maxWidth));
@@ -269,27 +259,10 @@ void CarouselView::geometryChange(const QRectF& newGeo, const QRectF& oldGeo) {
return; return;
} }
/*
* The carousel is horizontally centered.
*
* Changing its width therefore moves the local coordinate system
* by half the width delta. Keep the logical content stationary by
* moving contentX by the opposite amount.
*
* Crucially, do this directly instead of recomputing a logical
* index and converting it back. That avoids quantization and
* floating-point drift on every animation frame.
*/
const qreal delta = (newWidth - oldWidth) / 2.0; const qreal delta = (newWidth - oldWidth) / 2.0;
m_contentX -= delta; m_contentX -= delta;
/*
* A running glide/flick animation is expressed in contentX
* coordinates too. Shift both endpoints by exactly the same
* amount so the animation continues seamlessly in the new
* geometry.
*/
auto shiftAnimation = [delta](QVariantAnimation* anim) { auto shiftAnimation = [delta](QVariantAnimation* anim) {
if (anim->state() != QAbstractAnimation::Running) { if (anim->state() != QAbstractAnimation::Running) {
return; return;
@@ -356,9 +329,6 @@ CarouselView::Arrangement CarouselView::arrangementForCount(int n) const {
sideWidth += size; sideWidth += size;
} }
/*
* This is exactly the original full arrangement width.
*/
a.width = F + 2.0 * n * sp + 2.0 * sideWidth; a.width = F + 2.0 * n * sp + 2.0 * sideWidth;
a.centers.append(0); a.centers.append(0);
@@ -403,15 +373,6 @@ qreal CarouselView::targetWidthForMaxWidth(qreal maxWidth) const {
return 0; return 0;
} }
/*
* This deliberately preserves the old behavior:
*
* choose the largest complete arrangement whose outermost
* delegate can remain at minEdgeWidth.
*
* Therefore the component's desired width can be smaller than
* maxWidth.
*/
const int n = layoutCapacityForWidth(maxWidth); const int n = layoutCapacityForWidth(maxWidth);
return arrangementForCount(n).width; return arrangementForCount(n).width;
@@ -444,24 +405,11 @@ void CarouselView::rebuildArrangement() {
const Arrangement full = arrangementForCount(m_layoutCapacity); const Arrangement full = arrangementForCount(m_layoutCapacity);
/*
* If the current width can display the complete capacity
* arrangement, use that exact geometry.
*/
if (W >= full.width) { if (W >= full.width) {
a = full; a = full;
return; return;
} }
/*
* Otherwise find the complete arrangement immediately above W.
*
* Example:
*
* width(8) >= W >= width(7)
*
* means we're in the 8 -> 7 transition.
*/
int highN = 1; int highN = 1;
for (int n = 1; n <= m_layoutCapacity; ++n) { for (int n = 1; n <= m_layoutCapacity; ++n) {
@@ -488,10 +436,6 @@ void CarouselView::rebuildArrangement() {
t = qBound<qreal>(0.0, t, 1.0); t = qBound<qreal>(0.0, t, 1.0);
/*
* Keep the outgoing slot instantiated and visible while it
* smoothly transitions to zero.
*/
a.n = highN; a.n = highN;
a.width = W; a.width = W;
@@ -505,12 +449,6 @@ void CarouselView::rebuildArrangement() {
a.sizes[highN] = high.sizes[highN] * (1.0 - t); a.sizes[highN] = high.sizes[highN] * (1.0 - t);
/*
* All normal gaps stay constant.
*
* Only the gap immediately before the disappearing delegate
* collapses together with that delegate.
*/
a.outerSpacing = m_itemSpacing * (1.0 - t); a.outerSpacing = m_itemSpacing * (1.0 - t);
a.centers.append(0); a.centers.append(0);
@@ -909,10 +847,6 @@ void CarouselView::relayout() {
return; return;
} }
/*
* Keep enough slots for the largest layout we've needed.
* The currently visible count is determined by m_arrangement.
*/
const int half = m_layoutCapacity + 2; const int half = m_layoutCapacity + 2;
const int lo = m_currentVirtualIndex - half; const int lo = m_currentVirtualIndex - half;