Skip to content

Commit 6c05cdf

Browse files
committed
Improve selection and navigation of fields for emv-viewer
* Use currentItemChanged signal instead of itemPressed signal to ensure that highlighting of the associated input and display of the description occurs even when the tree item is selected during searching or via keyboard navigation * Let all tree items be selectable
1 parent 40cdf01 commit 6c05cdf

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

viewer/emv-viewer-mainwindow.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -518,10 +518,10 @@ void EmvViewerMainWindow::on_treeView_populateItemsCompleted(
518518
QMainWindow::statusBar()->showMessage(msg);
519519
}
520520

521-
void EmvViewerMainWindow::on_treeView_itemPressed(QTreeWidgetItem* item, int column)
521+
void EmvViewerMainWindow::on_treeView_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous)
522522
{
523-
if (item->type() == EmvTreeItemType) {
524-
EmvTreeItem* etItem = reinterpret_cast<EmvTreeItem*>(item);
523+
if (current && current->type() == EmvTreeItemType) {
524+
EmvTreeItem* etItem = reinterpret_cast<EmvTreeItem*>(current);
525525

526526
// Highlight selected item in input data. Note that rehighlight() will
527527
// also trigger the textChanged() signal and therefore signals must be

viewer/emv-viewer-mainwindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private slots: // connect-by-name helper functions
7171
void on_decodeObjectsCheckBox_stateChanged(int state);
7272
void on_searchDescriptionsCheckBox_stateChanged(int state);
7373
void on_treeView_populateItemsCompleted(unsigned int validBytes, unsigned int fieldCount, unsigned int invalidChars);
74-
void on_treeView_itemPressed(QTreeWidgetItem* item, int column);
74+
void on_treeView_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
7575
void on_treeView_itemCopyClicked(QTreeWidgetItem* item);
7676
void on_actionCopyAll_triggered();
7777
void on_actionFind_triggered();

viewer/emvtreeitem.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ static QTreeWidgetItem* addValueDol(
437437
)
438438
);
439439
dolItem->setExpanded(true);
440-
dolItem->setFlags(Qt::ItemIsEnabled);
440+
dolItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
441441

442442
r = emv_dol_itr_init(ptr, len, &itr);
443443
if (r) {
@@ -454,7 +454,7 @@ static QTreeWidgetItem* addValueDol(
454454
buildFieldString(info, entry.length)
455455
)
456456
);
457-
valueItem->setFlags(Qt::ItemNeverHasChildren | Qt::ItemIsEnabled);
457+
valueItem->setFlags(Qt::ItemNeverHasChildren | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
458458
}
459459
if (r < 0) {
460460
qDebug("emv_dol_itr_next() failed; r=%d", r);
@@ -480,7 +480,7 @@ static QTreeWidgetItem* addValueTagList(
480480
)
481481
);
482482
tlItem->setExpanded(true);
483-
tlItem->setFlags(Qt::ItemIsEnabled);
483+
tlItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
484484

485485
while ((r = iso8825_ber_tag_decode(ptr, len, &tag)) > 0) {
486486
EmvTlvInfo info(tag);
@@ -491,7 +491,7 @@ static QTreeWidgetItem* addValueTagList(
491491
buildFieldString(info)
492492
)
493493
);
494-
valueItem->setFlags(Qt::ItemNeverHasChildren | Qt::ItemIsEnabled);
494+
valueItem->setFlags(Qt::ItemNeverHasChildren | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
495495

496496
// Advance
497497
ptr = static_cast<const char*>(ptr) + r;

0 commit comments

Comments
 (0)