From 53e587b4b838c9201c5a8bbcbec1e17907ad30ab Mon Sep 17 00:00:00 2001 From: Zoran Kostic <60575976+nbgsmk@users.noreply.github.com> Date: Sun, 22 Nov 2020 20:07:39 +0100 Subject: [PATCH] markerwidget.cpp: - slight adjustment of columns - crash when deleting markers --- .../PC_Application/Traces/markerwidget.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Software/PC_Application/Traces/markerwidget.cpp b/Software/PC_Application/Traces/markerwidget.cpp index ce7cc7b..7a9bd96 100644 --- a/Software/PC_Application/Traces/markerwidget.cpp +++ b/Software/PC_Application/Traces/markerwidget.cpp @@ -12,9 +12,9 @@ MarkerWidget::MarkerWidget(TraceMarkerModel &model, QWidget *parent) : ui->treeView->setItemDelegateForColumn(TraceMarkerModel::ColIndexType, new MarkerTypeDelegate); ui->treeView->setItemDelegateForColumn(TraceMarkerModel::ColIndexSettings, new MarkerSettingsDelegate); - ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexNumber, 80); - ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexTrace, 80); - ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexType, 150); + ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexNumber, 60); // reduced width to fit widget when App is not maximized + ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexTrace, 60); // reduced width to fit widget when App is not maximized + ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexType, 120); // reduced width to fit widget when App is not maximized connect(&model.getModel(), &TraceModel::traceAdded, this, &MarkerWidget::updatePersistentEditors); connect(&model.getModel(), &TraceModel::traceRemoved, this, &MarkerWidget::updatePersistentEditors); @@ -31,7 +31,17 @@ MarkerWidget::~MarkerWidget() void MarkerWidget::on_bDelete_clicked() { - auto marker = model.markerFromIndex(ui->treeView->currentIndex()); + if (model.rowCount() <= 0) { + return; // prevent crash if bDelete clicked with no markers (empty model) + } + + QModelIndex ind = ui->treeView->currentIndex(); + if ( ! ind.isValid() ) { + return; // add marker(s), then click bDelete without clicking on any marker (there is no index clicked in treeView) + // alternative: select last marker, then proceede to delete it? + } + + auto marker = model.markerFromIndex(ind); if(!marker || marker->getParent()) { // can't delete child markers directly return;