diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-12-04 13:30:46 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-04 13:30:46 -0500 |
| commit | 9b8488fad325773f7952466a5150f37179d321b6 (patch) | |
| tree | 599a8b444ce315625872f34874de690adcc430b3 /src/modinfodialogfiletree.cpp | |
| parent | b209a8e47f866a129c53cef43539e96ab8722405 (diff) | |
| parent | 91b95d00a6fda3788e774488ebeb72b28c89e656 (diff) | |
Merge pull request #920 from isanae/double-click-previews
Double click previews
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); |
