mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-19 17:02:15 -07:00
Load widgets in batches.
This commit is contained in:
parent
cbb72d3b6f
commit
f8ce97d598
1 changed files with 21 additions and 5 deletions
|
|
@ -120,7 +120,9 @@ void PrintingSelector::setCard(const CardInfoPtr &newCard, const QString &_curre
|
|||
if (isVisible()) {
|
||||
updateDisplay();
|
||||
}
|
||||
flowWidget->setMinimumSizeToMaxSizeHint();
|
||||
flowWidget->scrollArea->verticalScrollBar()->setValue(0);
|
||||
flowWidget->repaint();
|
||||
}
|
||||
|
||||
void PrintingSelector::selectPreviousCard()
|
||||
|
|
@ -297,9 +299,23 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
|||
const QList<CardInfoPerSet> filteredSets = filterSets(sortedSets);
|
||||
const QList<CardInfoPerSet> prependedSets = prependPrintingsInDeck(filteredSets);
|
||||
|
||||
for (const auto &cardInfoPerSet : prependedSets) {
|
||||
auto *cardDisplayWidget = new PrintingSelectorCardDisplayWidget(
|
||||
this, deckEditor, deckModel, deckView, cardSizeSlider, selectedCard, cardInfoPerSet, currentZone);
|
||||
flowWidget->addWidget(cardDisplayWidget);
|
||||
}
|
||||
// Defer widget creation
|
||||
int batchSize = 10;
|
||||
int currentIndex = 0;
|
||||
QTimer *timer = new QTimer(this);
|
||||
connect(timer, &QTimer::timeout, this, [=]() mutable {
|
||||
for (int i = 0; i < batchSize && currentIndex < prependedSets.size(); ++i, ++currentIndex) {
|
||||
auto *cardDisplayWidget =
|
||||
new PrintingSelectorCardDisplayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
||||
selectedCard, prependedSets[currentIndex], currentZone);
|
||||
flowWidget->addWidget(cardDisplayWidget);
|
||||
}
|
||||
|
||||
// Stop timer when done
|
||||
if (currentIndex >= prependedSets.size()) {
|
||||
timer->stop();
|
||||
timer->deleteLater();
|
||||
}
|
||||
});
|
||||
timer->start(0); // Process as soon as possible
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue