diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp index 21f1fcbca..352d55c79 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp @@ -29,7 +29,8 @@ #include #include -TabArchidekt::TabArchidekt(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor), currentPage(1), isLoadingMore(false) +TabArchidekt::TabArchidekt(TabSupervisor *_tabSupervisor) + : Tab(_tabSupervisor), currentPage(1), isLoadingMore(false), isListMode(true) { // Initialize network networkManager = new QNetworkAccessManager(this); @@ -185,13 +186,14 @@ bool TabArchidekt::eventFilter(QObject *obj, QEvent *event) if (obj == scrollArea->viewport() && event->type() == QEvent::Wheel) { auto *wheelEvent = static_cast(event); - if (wheelEvent->angleDelta().y() < 0 && !isLoadingMore) { + if (wheelEvent->angleDelta().y() < 0 && !isLoadingMore && isListMode) { loadNextPage(); wheelEvent->accept(); return false; // allow scrolling } } + // Always pass the event to the parent to handle normal scrolling return QWidget::eventFilter(obj, event); } @@ -510,7 +512,11 @@ QString TabArchidekt::buildSearchUrl() void TabArchidekt::doSearch() { + // Reset to first page on new search currentPage = 1; + // We're searching, so we'll be in list mode + isListMode = true; + // Don't debounce - only called by explicit user actions now doSearchImmediate(); } @@ -617,6 +623,9 @@ void TabArchidekt::processDeckResponse(QJsonObject reply) ArchidektApiResponseDeck deckData; deckData.fromJson(reply); + // We're in single deck mode - disable infinite scroll + isListMode = false; + // Clear existing results for single deck view QLayoutItem *item; while ((item = resultsLayout->takeAt(0)) != nullptr) { diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h index f85b4097d..e837e672b 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/tab_archidekt.h @@ -226,6 +226,7 @@ private: QTimer *searchDebounceTimer; ///< Timer to debounce search requests int currentPage; ///< Current page number for infinite scroll bool isLoadingMore; ///< Flag to prevent multiple simultaneous page loads + bool isListMode; ArchidektApiResponseDeckListingsDisplayWidget *listingsWidget = nullptr; // ---------------------------------------------------------------------