[LyX/master] Prefer following, not previous, item in selection manager after deletion (#12871)

Juergen Spitzmueller spitz at lyx.org
Mon Sep 18 06:45:12 UTC 2023


commit b13685d9bb3ce6db8f285f1c92abbe6b8bf90d2c
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Mon Sep 18 10:02:34 2023 +0200

    Prefer following, not previous, item in selection manager after deletion (#12871)
---
 src/frontends/qt/GuiSelectionManager.cpp |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/frontends/qt/GuiSelectionManager.cpp b/src/frontends/qt/GuiSelectionManager.cpp
index b5c34ee..d99cd23 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();
 }
 


More information about the lyx-cvs mailing list