From b13685d9bb3ce6db8f285f1c92abbe6b8bf90d2c Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Mon, 18 Sep 2023 10:02:34 +0200 Subject: [PATCH] Prefer following, not previous, item in selection manager after deletion (#12871) --- src/frontends/qt/GuiSelectionManager.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/frontends/qt/GuiSelectionManager.cpp b/src/frontends/qt/GuiSelectionManager.cpp index b5c34ee7f2..d99cd23897 100644 --- a/src/frontends/qt/GuiSelectionManager.cpp +++ b/src/frontends/qt/GuiSelectionManager.cpp @@ -309,17 +309,19 @@ void GuiSelectionManager::deletePB_clicked() QModelIndex idx = selIdx.first(); int const row = idx.row(); - int nrows = selectedLV->model()->rowCount(); selectedModel->removeRow(row); selectionChanged(); //signal - // select previous item - if (nrows > 0) + int nrows = selectedLV->model()->rowCount(); + + // select following item if one follows, + // otherwise use previous one if we have one + if (row < nrows) + selectedLV->setCurrentIndex(selectedLV->model()->index(row, 0)); + else if (nrows > 0 && row > 0) selectedLV->setCurrentIndex(selectedLV->model()->index(row - 1, 0)); - else if (nrows == 0) - selectedLV->setCurrentIndex(selectedLV->model()->index(0, 0)); - selectedHasFocus_ = (nrows > 1); + selectedHasFocus_ = (nrows > 0); updateHook(); } -- 2.39.5