Skip to content

Commit b62f571

Browse files
authored
Fix danmar#1420 (GUI: Clarify results view context menu) (danmar#7674)
The recheck and hide options in the context menu now show how many files or errors are affected. If no files or errors are selected, the pertinent option is disabled. I've opted to count top-level header files as well since the recheck option is effective on them, they're rechecked as part of the file that included them.
1 parent beee36a commit b62f571

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

gui/resultstree.cpp

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -747,21 +747,35 @@ void ResultsTree::contextMenuEvent(QContextMenuEvent * e)
747747
menu.addSeparator();
748748
}
749749

750+
int selectedFiles = 0;
751+
int selectedResults = 0;
752+
753+
for (auto row : mSelectionModel->selectedRows()) {
754+
auto *item = mModel.itemFromIndex(row);
755+
if (!item->parent())
756+
selectedFiles++;
757+
else if (!item->parent()->parent())
758+
selectedResults++;
759+
}
760+
750761
//Create an action for the application
751-
auto *recheckAction = new QAction(tr("Recheck"), &menu);
762+
auto *recheckAction = new QAction(tr("Recheck %1 file(s)").arg(selectedFiles), &menu);
752763
auto *copyAction = new QAction(tr("Copy"), &menu);
753-
auto *hide = new QAction(tr("Hide"), &menu);
764+
auto *hide = new QAction(tr("Hide %1 result(s)").arg(selectedResults), &menu);
754765
auto *hideallid = new QAction(tr("Hide all with id"), &menu);
755766
auto *opencontainingfolder = new QAction(tr("Open containing folder"), &menu);
756767

757-
if (multipleSelection) {
768+
if (selectedFiles == 0 || mThread->isChecking())
769+
recheckAction->setDisabled(true);
770+
771+
if (selectedResults == 0)
772+
hide->setDisabled(true);
773+
774+
if (selectedResults == 0 || multipleSelection)
758775
hideallid->setDisabled(true);
776+
777+
if (multipleSelection)
759778
opencontainingfolder->setDisabled(true);
760-
}
761-
if (mThread->isChecking())
762-
recheckAction->setDisabled(true);
763-
else
764-
recheckAction->setDisabled(false);
765779

766780
menu.addAction(recheckAction);
767781
menu.addSeparator();
@@ -774,7 +788,9 @@ void ResultsTree::contextMenuEvent(QContextMenuEvent * e)
774788
{
775789
QVariantMap itemdata = mContextItem->data().toMap();
776790
const QString messageId = itemdata[ERRORID].toString();
777-
suppress->setEnabled(!ErrorLogger::isCriticalErrorId(messageId.toStdString()));
791+
792+
if (selectedResults == 0 || ErrorLogger::isCriticalErrorId(messageId.toStdString()))
793+
suppress->setDisabled(true);
778794
}
779795
menu.addAction(suppress);
780796
connect(suppress, &QAction::triggered, this, &ResultsTree::suppressSelectedIds);

0 commit comments

Comments
 (0)