diff options
Diffstat (limited to 'src/modinfodialogfiletree.cpp')
| -rw-r--r-- | src/modinfodialogfiletree.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp index e94b0a4f..d1ae3823 100644 --- a/src/modinfodialogfiletree.cpp +++ b/src/modinfodialogfiletree.cpp @@ -14,6 +14,9 @@ namespace shell = MOBase::shell; // checking whether menu items apply to them, just show all of them const int max_scan_for_context_menu = 50; +// in mainwindow.cpp +void setDefaultActivationActionForFile(QAction* open, QAction* preview); + FileTreeTab::FileTreeTab(ModInfoDialogTabContext cx) : ModInfoDialogTab(std::move(cx)), m_fs(nullptr) { @@ -32,10 +35,6 @@ 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(); }); @@ -56,7 +55,7 @@ FileTreeTab::FileTreeTab(ModInfoDialogTabContext cx) ui->filetree->setEditTriggers( ui->filetree->editTriggers() & (~QAbstractItemView::DoubleClicked)); - connect(ui->filetree, &QTreeView::activated, [&](auto&&){ onOpen(); }); + connect(ui->filetree, &QTreeView::activated, [&](auto&&){ onActivated(); }); } void FileTreeTab::clear() @@ -145,6 +144,23 @@ void FileTreeTab::onCreateDirectory() ui->filetree->edit(newIndex); } +void FileTreeTab::onActivated() +{ + auto selection = singleSelection(); + if (!selection.isValid()) { + return; + } + + const auto path = m_fs->filePath(selection); + const auto tryPreview = core().settings().interface().doubleClicksOpenPreviews(); + + if (tryPreview && canPreviewFile(plugin(), false, path)) { + onPreview(); + } else { + onOpen(); + } +} + void FileTreeTab::onOpen() { auto selection = singleSelection(); @@ -152,8 +168,9 @@ void FileTreeTab::onOpen() return; } + const auto path = m_fs->filePath(selection); core().processRunner() - .setFromFile(parentWidget(), m_fs->filePath(selection)) + .setFromFile(parentWidget(), path) .setWaitForCompletion() .run(); } @@ -408,7 +425,6 @@ void FileTreeTab::onContextMenu(const QPoint &pos) // this is a multiple selection, don't show open or explore actions so users // don't open a thousand files enableNewFolder = true; - enablePreview = true; enableDelete = true; if (selection.size() < max_scan_for_context_menu) { @@ -446,6 +462,8 @@ void FileTreeTab::onContextMenu(const QPoint &pos) menu.addAction(m_actions.preview); m_actions.preview->setEnabled(enablePreview); + setDefaultActivationActionForFile(m_actions.open, m_actions.preview); + menu.addAction(m_actions.explore); m_actions.explore->setEnabled(enableExplore); |
