summaryrefslogtreecommitdiff
path: root/src/modinfodialogconflicts.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-12-08 11:33:03 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2019-12-08 11:33:03 -0500
commitc9049bb07274aaefa79c9751ec40910bf8daf0ca (patch)
tree48aada30a7c0ee4111422a9cfc84275a8f2bbf8d /src/modinfodialogconflicts.cpp
parent2c59d13be645bb8c12adae883938c9a8652f3dee (diff)
conflicts tab: run exes unhooked by default
Diffstat (limited to 'src/modinfodialogconflicts.cpp')
-rw-r--r--src/modinfodialogconflicts.cpp72
1 files changed, 40 insertions, 32 deletions
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index 9c7ccc8c..81e8c7a3 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -542,45 +542,32 @@ void ConflictsTab::activateItems(QTreeView* tree)
if (tryPreview && canPreviewFile(plugin(), item->isArchive(), path)) {
previewItem(item);
} else {
- openItem(item);
+ openItem(item, false);
}
return true;
});
}
-void ConflictsTab::openItems(QTreeView* tree)
+void ConflictsTab::openItems(QTreeView* tree, bool hooked)
{
// the menu item is only shown for a single selection, but handle all of them
// in case this changes
for_each_in_selection(tree, [&](const ConflictItem* item) {
- openItem(item);
+ openItem(item, hooked);
return true;
});
}
-void ConflictsTab::openItem(const ConflictItem* item)
+void ConflictsTab::openItem(const ConflictItem* item, bool hooked)
{
core().processRunner()
.setFromFile(parentWidget(), item->fileName())
+ .setHooked(hooked)
.setWaitForCompletion()
.run();
}
-void ConflictsTab::runItemsHooked(QTreeView* tree)
-{
- // the menu item is only shown for a single selection, but handle all of them
- // in case this changes
- for_each_in_selection(tree, [&](const ConflictItem* item) {
- core().processRunner()
- .setFromFile(parentWidget(), item->fileName(), true)
- .setWaitForCompletion()
- .run();
-
- return true;
- });
-}
-
void ConflictsTab::previewItems(QTreeView* tree)
{
// the menu item is only shown for a single selection, but handle all of them
@@ -615,30 +602,44 @@ void ConflictsTab::showContextMenu(const QPoint &pos, QTreeView* tree)
// open
if (actions.open) {
connect(actions.open, &QAction::triggered, [&]{
- openItems(tree);
+ openItems(tree, false);
});
+ }
- menu.addAction(actions.open);
+ // preview
+ if (actions.preview) {
+ connect(actions.preview, &QAction::triggered, [&]{
+ previewItems(tree);
+ });
+ }
+
+ if ((actions.open && actions.open->isEnabled()) && (actions.preview && actions.preview->isEnabled())) {
+ if (Settings::instance().interface().doubleClicksOpenPreviews()) {
+ menu.addAction(actions.preview);
+ menu.addAction(actions.open);
+ } else {
+ menu.addAction(actions.open);
+ menu.addAction(actions.preview);
+ }
+ } else {
+ if (actions.open) {
+ menu.addAction(actions.open);
+ }
+
+ if (actions.preview) {
+ menu.addAction(actions.preview);
+ }
}
// run hooked
if (actions.runHooked) {
connect(actions.runHooked, &QAction::triggered, [&]{
- runItemsHooked(tree);
+ openItems(tree, true);
});
menu.addAction(actions.runHooked);
}
- // preview
- if (actions.preview) {
- connect(actions.preview, &QAction::triggered, [&]{
- previewItems(tree);
- });
-
- menu.addAction(actions.preview);
- }
-
// goto
if (actions.gotoMenu) {
menu.addMenu(actions.gotoMenu);
@@ -681,9 +682,15 @@ void ConflictsTab::showContextMenu(const QPoint &pos, QTreeView* tree)
menu.addAction(actions.unhide);
}
- setDefaultActivationActionForFile(actions.open, actions.preview);
-
if (!menu.isEmpty()) {
+ if (actions.open || actions.preview || actions.runHooked) {
+ // bold the first option
+ auto* top = menu.actions()[0];
+ auto f = top->font();
+ f.setBold(true);
+ top->setFont(f);
+ }
+
menu.exec(tree->viewport()->mapToGlobal(pos));
}
}
@@ -769,6 +776,7 @@ ConflictsTab::Actions ConflictsTab::createMenuActions(QTreeView* tree)
if (enableRun) {
actions.open = new QAction(tr("&Execute"), parentWidget());
+ actions.runHooked = new QAction(tr("Execute with &VFS"), parentWidget());
} else if (enableOpen) {
actions.open = new QAction(tr("&Open"), parentWidget());
actions.runHooked = new QAction(tr("Open with &VFS"), parentWidget());