Fix invalid index

PR #23586.
This commit is contained in:
Vladimir Golovnev
2025-12-10 16:26:39 +03:00
committed by GitHub
parent 0f80d3a74a
commit 96161627d6

View File

@@ -49,18 +49,6 @@
#include "transferlistwidget.h" #include "transferlistwidget.h"
#include "utils.h" #include "utils.h"
namespace
{
enum ItemPos
{
StatusItemPos,
CategoryItemPos,
TagItemPos,
TrackerStatusItemPos,
TrackersItemPos
};
}
TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferListWidget *transferList, const bool downloadFavicon) TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferListWidget *transferList, const bool downloadFavicon)
: QWidget(parent) : QWidget(parent)
, m_transferList {transferList} , m_transferList {transferList}
@@ -80,7 +68,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
auto *item = new TransferListFiltersWidgetItem(tr("Status"), new StatusFilterWidget(this, transferList), this); auto *item = new TransferListFiltersWidgetItem(tr("Status"), new StatusFilterWidget(this, transferList), this);
item->setChecked(pref->getStatusFilterState()); item->setChecked(pref->getStatusFilterState());
connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setStatusFilterState); connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setStatusFilterState);
mainWidgetLayout->insertWidget(StatusItemPos, item); mainWidgetLayout->addWidget(item);
} }
{ {
@@ -101,7 +89,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
m_transferList->applyCategoryFilter(enabled ? categoryFilterWidget->currentCategory() : QString()); m_transferList->applyCategoryFilter(enabled ? categoryFilterWidget->currentCategory() : QString());
}); });
connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setCategoryFilterState); connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setCategoryFilterState);
mainWidgetLayout->insertWidget(CategoryItemPos, item); mainWidgetLayout->addWidget(item);
} }
{ {
@@ -122,16 +110,18 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
m_transferList->applyTagFilter(enabled ? tagFilterWidget->currentTag() : std::nullopt); m_transferList->applyTagFilter(enabled ? tagFilterWidget->currentTag() : std::nullopt);
}); });
connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setTagFilterState); connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setTagFilterState);
mainWidgetLayout->insertWidget(TagItemPos, item); mainWidgetLayout->addWidget(item);
} }
const int trackerStatusItemPos = mainWidgetLayout->count();
{ {
m_trackersFilterWidget = new TrackersFilterWidget(this, transferList, downloadFavicon); m_trackersFilterWidget = new TrackersFilterWidget(this, transferList, downloadFavicon);
auto *item = new TransferListFiltersWidgetItem(tr("Trackers"), m_trackersFilterWidget, this); auto *item = new TransferListFiltersWidgetItem(tr("Trackers"), m_trackersFilterWidget, this);
item->setChecked(pref->getTrackerFilterState()); item->setChecked(pref->getTrackerFilterState());
connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setTrackerFilterState); connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setTrackerFilterState);
mainWidgetLayout->insertWidget(TrackersItemPos, item); mainWidgetLayout->addWidget(item);
} }
auto *scroll = new QScrollArea(this); auto *scroll = new QScrollArea(this);
@@ -144,17 +134,17 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
vLayout->setContentsMargins(0, 0, 0, 0); vLayout->setContentsMargins(0, 0, 0, 0);
vLayout->addWidget(scroll); vLayout->addWidget(scroll);
const auto createTrackerStatusItem = [this, mainWidgetLayout, pref] const auto createTrackerStatusItem = [this, mainWidgetLayout, trackerStatusItemPos, pref]
{ {
auto *item = new TransferListFiltersWidgetItem(tr("Tracker status"), new TrackerStatusFilterWidget(this, m_transferList), this); auto *item = new TransferListFiltersWidgetItem(tr("Tracker status"), new TrackerStatusFilterWidget(this, m_transferList), this);
item->setChecked(pref->getTrackerStatusFilterState()); item->setChecked(pref->getTrackerStatusFilterState());
connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setTrackerStatusFilterState); connect(item, &TransferListFiltersWidgetItem::toggled, pref, &Preferences::setTrackerStatusFilterState);
mainWidgetLayout->insertWidget(TrackerStatusItemPos, item); mainWidgetLayout->insertWidget(trackerStatusItemPos, item);
}; };
const auto removeTrackerStatusItem = [mainWidgetLayout] const auto removeTrackerStatusItem = [mainWidgetLayout, trackerStatusItemPos]
{ {
QLayoutItem *layoutItem = mainWidgetLayout->takeAt(TrackerStatusItemPos); QLayoutItem *layoutItem = mainWidgetLayout->takeAt(trackerStatusItemPos);
delete layoutItem->widget(); delete layoutItem->widget();
delete layoutItem; delete layoutItem;
}; };