summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainwindow.cpp36
-rw-r--r--src/mainwindow.h2
-rw-r--r--src/modinfodialogconflicts.cpp16
-rw-r--r--src/modinfodialogfiletree.cpp10
4 files changed, 56 insertions, 8 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index cfa27fad..3af0f30c 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -350,6 +350,7 @@ MainWindow::MainWindow(Settings &settings
connect(ui->espFilterEdit, SIGNAL(textChanged(QString)), this, SLOT(espFilterChanged(QString)));
connect(ui->dataTree, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(expandDataTreeItem(QTreeWidgetItem*)));
+ connect(ui->dataTree, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(activateDataTreeItem(QTreeWidgetItem*, int)));
connect(m_OrganizerCore.directoryRefresher(), SIGNAL(refreshed()), this, SLOT(directory_refreshed()));
connect(m_OrganizerCore.directoryRefresher(), SIGNAL(progress(int)), this, SLOT(refresher_progress(int)));
@@ -1767,6 +1768,10 @@ void MainWindow::expandDataTreeItem(QTreeWidgetItem *item)
}
}
+void MainWindow::activateDataTreeItem(QTreeWidgetItem *item, int column)
+{
+ openDataFile(item);
+}
bool MainWindow::refreshProfiles(bool selectProfile)
{
@@ -5295,7 +5300,19 @@ void MainWindow::openDataFile()
return;
}
- const QString path = m_ContextItem->data(0, Qt::UserRole).toString();
+ openDataFile(m_ContextItem);
+}
+
+void MainWindow::openDataFile(QTreeWidgetItem* item)
+{
+ const auto isArchive = item->data(0, Qt::UserRole + 1).toBool();
+ const auto isDirectory = item->data(0, Qt::UserRole + 3).toBool();
+
+ if (isArchive || isDirectory) {
+ return;
+ }
+
+ const QString path = item->data(0, Qt::UserRole).toString();
const QFileInfo targetInfo(path);
m_OrganizerCore.processRunner()
@@ -5389,8 +5406,7 @@ void MainWindow::motdReceived(const QString &motd)
void MainWindow::on_dataTree_customContextMenuRequested(const QPoint &pos)
{
- QTreeWidget *dataTree = findChild<QTreeWidget*>("dataTree");
- m_ContextItem = dataTree->itemAt(pos.x(), pos.y());
+ m_ContextItem = ui->dataTree->itemAt(pos.x(), pos.y());
QMenu menu;
if ((m_ContextItem != nullptr) && (m_ContextItem->childCount() == 0)
@@ -5399,13 +5415,21 @@ void MainWindow::on_dataTree_customContextMenuRequested(const QPoint &pos)
const auto isArchive = m_ContextItem->data(0, Qt::UserRole + 1).toBool();
const auto isDirectory = m_ContextItem->data(0, Qt::UserRole + 3).toBool();
+ QAction* open = nullptr;
+
if (canRunFile(isArchive, fileName)) {
- menu.addAction(tr("&Execute"), this, SLOT(openDataFile()));
+ open = menu.addAction(tr("&Execute"), this, SLOT(openDataFile()));
} else if (canOpenFile(isArchive, fileName)) {
- menu.addAction(tr("&Open"), this, SLOT(openDataFile()));
+ open = menu.addAction(tr("&Open"), this, SLOT(openDataFile()));
menu.addAction(tr("Open with &VFS"), this, SLOT(runDataFileHooked()));
}
+ if (open) {
+ auto bold = open->font();
+ bold.setBold(true);
+ open->setFont(bold);
+ }
+
menu.addAction(tr("&Add as Executable"), this, SLOT(addAsExecutable()));
if (m_PluginContainer.previewGenerator().previewSupported(QFileInfo(fileName).suffix())) {
@@ -5432,7 +5456,7 @@ void MainWindow::on_dataTree_customContextMenuRequested(const QPoint &pos)
menu.addAction(tr("Write To File..."), this, SLOT(writeDataToFile()));
menu.addAction(tr("Refresh"), this, SLOT(on_btnRefreshData_clicked()));
- menu.exec(dataTree->viewport()->mapToGlobal(pos));
+ menu.exec(ui->dataTree->viewport()->mapToGlobal(pos));
}
void MainWindow::on_conflictsCheckBox_toggled(bool)
diff --git a/src/mainwindow.h b/src/mainwindow.h
index ada8e7a7..2894b2e7 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -440,6 +440,7 @@ private slots:
// data-tree context menu
void writeDataToFile();
void openDataFile();
+ void openDataFile(QTreeWidgetItem* item);
void runDataFileHooked();
void addAsExecutable();
void previewDataFile();
@@ -589,6 +590,7 @@ private slots:
void refreshSavesIfOpen();
void expandDataTreeItem(QTreeWidgetItem *item);
+ void activateDataTreeItem(QTreeWidgetItem *item, int column);
void about();
void delayedRemove();
diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp
index 6018306c..daa40cb3 100644
--- a/src/modinfodialogconflicts.cpp
+++ b/src/modinfodialogconflicts.cpp
@@ -587,6 +587,10 @@ void ConflictsTab::showContextMenu(const QPoint &pos, QTreeView* tree)
openItems(tree);
});
+ auto bold = actions.open->font();
+ bold.setBold(true);
+ actions.open->setFont(bold);
+
menu.addAction(actions.open);
}
@@ -824,11 +828,15 @@ GeneralConflictsTab::GeneralConflictsTab(
QObject::connect(
ui->overwriteTree, &QTreeView::doubleClicked,
- [&](auto&& item){ onOverwriteActivated(item); });
+ [&](auto&&){ m_tab->openItems(ui->overwriteTree); });
QObject::connect(
ui->overwrittenTree, &QTreeView::doubleClicked,
- [&](auto&& item){ onOverwrittenActivated(item); });
+ [&](auto&& item){ m_tab->openItems(ui->overwrittenTree); });
+
+ QObject::connect(
+ ui->noConflictTree, &QTreeView::doubleClicked,
+ [&](auto&& item){ m_tab->openItems(ui->noConflictTree); });
QObject::connect(
ui->overwriteTree, &QTreeView::customContextMenuRequested,
@@ -1040,6 +1048,10 @@ AdvancedConflictsTab::AdvancedConflictsTab(
[&]{ update(); });
QObject::connect(
+ ui->conflictsAdvancedList, &QTreeView::activated,
+ [&]{ m_tab->openItems(ui->conflictsAdvancedList); });
+
+ QObject::connect(
ui->conflictsAdvancedList, &QTreeView::customContextMenuRequested,
[&](const QPoint& p){ m_tab->showContextMenu(p, ui->conflictsAdvancedList); });
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp
index 23d65fdb..e94b0a4f 100644
--- a/src/modinfodialogfiletree.cpp
+++ b/src/modinfodialogfiletree.cpp
@@ -32,6 +32,10 @@ FileTreeTab::FileTreeTab(ModInfoDialogTabContext cx)
m_actions.hide = new QAction(tr("&Hide"), ui->filetree);
m_actions.unhide = new QAction(tr("&Unhide"), ui->filetree);
+ auto bold = m_actions.open->font();
+ bold.setBold(true);
+ m_actions.open->setFont(bold);
+
connect(m_actions.newFolder, &QAction::triggered, [&]{ onCreateDirectory(); });
connect(m_actions.open, &QAction::triggered, [&]{ onOpen(); });
connect(m_actions.runHooked, &QAction::triggered, [&]{ onRunHooked(); });
@@ -47,6 +51,12 @@ FileTreeTab::FileTreeTab(ModInfoDialogTabContext cx)
connect(
ui->filetree, &QTreeView::customContextMenuRequested,
[&](const QPoint& pos){ onContextMenu(pos); });
+
+ // disable renaming on double click, open the file instead
+ ui->filetree->setEditTriggers(
+ ui->filetree->editTriggers() & (~QAbstractItemView::DoubleClicked));
+
+ connect(ui->filetree, &QTreeView::activated, [&](auto&&){ onOpen(); });
}
void FileTreeTab::clear()