From ade58079a0a3e6b9d1a0793ab4c084d0f9431f4d Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Fri, 24 Oct 2025 08:21:26 -0700 Subject: Update FilterEdit and FilterTarget to preserve existing selections The down and enter keys now preserve an existing selection in the associated list or table views, rather than unconditionally selecting or activating the first item. --- view/kernelcache/ui/symboltable.h | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'view/kernelcache/ui/symboltable.h') diff --git a/view/kernelcache/ui/symboltable.h b/view/kernelcache/ui/symboltable.h index 866390c7..28d07199 100644 --- a/view/kernelcache/ui/symboltable.h +++ b/view/kernelcache/ui/symboltable.h @@ -68,26 +68,25 @@ public: scrollTo(currentIndex); } - void selectFirstItem() override + void ensureSelection() override { - if (model()->rowCount() > 0) { - QModelIndex top = indexAt(rect().topLeft()); - if (top.isValid()) { - selectionModel()->select(top, QItemSelectionModel::ClearAndSelect); - setCurrentIndex(top); - } + QModelIndex current = selectionModel()->currentIndex(); + if (current.isValid() || model()->rowCount() == 0) + return; + + if (auto top = indexAt(rect().topLeft()); top.isValid()) + { + selectionModel()->select(top, QItemSelectionModel::ClearAndSelect); + setCurrentIndex(top); } } - void activateFirstItem() override + + void activateSelection() override { - if (model()->rowCount() > 0) { - QModelIndex topLeft = indexAt(rect().topLeft()); - if (topLeft.isValid()) { - setCurrentIndex(topLeft); - emit activated(topLeft); - } - } + ensureSelection(); + if (auto current = selectionModel()->currentIndex(); current.isValid()) + emit activated(current); } KernelCacheAPI::CacheSymbol getSymbolAtRow(int row) const -- cgit v1.3.1