From b7bce31cdcce7ddd982d244f985a92caff22fd11 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov Date: Thu, 2 Apr 2026 22:54:49 +0300 Subject: [PATCH] fix: fix some minor bugs --- src/ExplorerWidget.cpp | 15 ++++++++++++--- src/pages/MainPage.cpp | 12 +++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/ExplorerWidget.cpp b/src/ExplorerWidget.cpp index 0d96a83..0549dc5 100644 --- a/src/ExplorerWidget.cpp +++ b/src/ExplorerWidget.cpp @@ -122,23 +122,32 @@ void ExplorerWidget::navigateTo(const NavTarget& target, bool addToHistory) } else if constexpr (std::is_same_v) { auto block = m_indexer->getBlockById(t.blockId); if (block) { - auto* page = new BlockPage(*block); + auto* page = new BlockPage(*block, this); connectPageSignals(page); showPage(page); + } else { + qWarning("Block #%llu not found", static_cast(t.blockId)); + showPage(m_mainPage); } } else if constexpr (std::is_same_v) { auto tx = m_indexer->getTransaction(t.hash); if (tx) { - auto* page = new TransactionPage(*tx); + auto* page = new TransactionPage(*tx, this); connectPageSignals(page); showPage(page); + } else { + qWarning("Transaction %s not found", qPrintable(t.hash)); + showPage(m_mainPage); } } else if constexpr (std::is_same_v) { auto account = m_indexer->getAccount(t.accountId); if (account) { - auto* page = new AccountPage(*account, m_indexer.get()); + auto* page = new AccountPage(*account, m_indexer.get(), this); connectPageSignals(page); showPage(page); + } else { + qWarning("Account %s not found", qPrintable(t.accountId)); + showPage(m_mainPage); } } }, target); diff --git a/src/pages/MainPage.cpp b/src/pages/MainPage.cpp index e976f12..ce7ca7e 100644 --- a/src/pages/MainPage.cpp +++ b/src/pages/MainPage.cpp @@ -217,7 +217,7 @@ void MainPage::refresh() if (m_recentBlocksWidget) { m_contentLayout->removeWidget(m_recentBlocksWidget); - delete m_recentBlocksWidget; + m_recentBlocksWidget->deleteLater(); m_recentBlocksWidget = nullptr; m_blocksLayout = nullptr; m_loadMoreBtn = nullptr; @@ -322,8 +322,14 @@ void MainPage::onNewBlock(const Block& block) m_healthLabel->setText(QString("Chain height: %1").arg(block.blockId)); // Append to layout then move to top (index 0) + int countBefore = m_blocksLayout->count(); addBlockRow(m_blocksLayout, block); - auto* newRow = m_blocksLayout->itemAt(m_blocksLayout->count() - 1)->widget(); + if (m_blocksLayout->count() <= countBefore) return; + + QLayoutItem* item = m_blocksLayout->itemAt(m_blocksLayout->count() - 1); + if (!item || !item->widget()) return; + + QWidget* newRow = item->widget(); m_blocksLayout->removeWidget(newRow); m_blocksLayout->insertWidget(0, newRow); } @@ -332,7 +338,7 @@ void MainPage::clearSearchResults() { if (m_searchResultsWidget) { m_contentLayout->removeWidget(m_searchResultsWidget); - delete m_searchResultsWidget; + m_searchResultsWidget->deleteLater(); m_searchResultsWidget = nullptr; } if (m_recentBlocksWidget) {