From d8f3d447c8554a6a83079c5bdec3a97baad3b8c7 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Fri, 31 Jul 2026 17:22:18 +0100 Subject: [PATCH] Disable sorting and fix memory leak --- .../demodpager/pagerdemodnotificationdialog.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/channelrx/demodpager/pagerdemodnotificationdialog.cpp b/plugins/channelrx/demodpager/pagerdemodnotificationdialog.cpp index a4405175e..be9f0c302 100644 --- a/plugins/channelrx/demodpager/pagerdemodnotificationdialog.cpp +++ b/plugins/channelrx/demodpager/pagerdemodnotificationdialog.cpp @@ -42,7 +42,7 @@ PagerDemodNotificationDialog::PagerDemodNotificationDialog(PagerDemodSettings *s resizeTable(); for (int i = 0; i < m_settings->m_notificationSettings.size(); i++) { - addRow(m_settings->m_notificationSettings[i]); + addRow(m_settings->m_notificationSettings[i].data()); } } @@ -54,11 +54,10 @@ PagerDemodNotificationDialog::~PagerDemodNotificationDialog() void PagerDemodNotificationDialog::accept() { - qDeleteAll(m_settings->m_notificationSettings); m_settings->m_notificationSettings.clear(); for (int i = 0; i < ui->table->rowCount(); i++) { - PagerDemodSettings::NotificationSettings *notificationSettings = new PagerDemodSettings::NotificationSettings(); + QSharedPointer notificationSettings = QSharedPointer::create(); int idx = ((QComboBox *)ui->table->cellWidget(i, NOTIFICATION_COL_MATCH))->currentIndex(); notificationSettings->m_matchColumn = m_columnMap[idx]; notificationSettings->m_regExp = ui->table->item(i, NOTIFICATION_COL_REG_EXP)->data(Qt::DisplayRole).toString().trimmed(); @@ -103,7 +102,7 @@ void PagerDemodNotificationDialog::on_remove_clicked() { int row = indexList.at(0).row(); ui->table->removeRow(row); - m_colorGUIs.removeAt(row); + delete m_colorGUIs.takeAt(row); } } @@ -171,5 +170,6 @@ void PagerDemodNotificationDialog::addRow(PagerDemodSettings::NotificationSettin ui->table->setItem(row, NOTIFICATION_COL_SPEECH, speechItem); ui->table->setItem(row, NOTIFICATION_COL_COMMAND, commandItem); ui->table->setCellWidget(row, NOTIFICATION_COL_PLOT_ON_MAP, plotOnMap); - ui->table->setSortingEnabled(true); + // Sorting is intentionally left disabled - the table mixes items with cell widgets and a + // parallel m_colorGUIs list indexed by row, none of which are reordered when sorting }