mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-29 13:58:51 +03:00
Fix torrent file selection in Finder on mac
This commit is contained in:
parent
84c84160fd
commit
d57bd62add
3 changed files with 28 additions and 0 deletions
|
@ -36,5 +36,6 @@
|
|||
QPixmap pixmapForExtension(const QString &ext, const QSize &size);
|
||||
void overrideDockClickHandler(bool (*dockClickHandler)(id, SEL, ...));
|
||||
void displayNotification(const QString &title, const QString &message);
|
||||
void openFiles(const QSet<QString> &pathsList);
|
||||
|
||||
#endif // MACUTILITIES_H
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include "macutilities.h"
|
||||
|
||||
#include <QSet>
|
||||
#include <QtMac>
|
||||
#include <objc/message.h>
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
@ -81,3 +82,15 @@ void displayNotification(const QString &title, const QString &message)
|
|||
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
|
||||
}
|
||||
}
|
||||
|
||||
void openFiles(const QSet<QString> &pathsList)
|
||||
{
|
||||
@autoreleasepool {
|
||||
NSMutableArray *pathURLs = [NSMutableArray arrayWithCapacity:pathsList.size()];
|
||||
|
||||
for (const auto &path : pathsList)
|
||||
[pathURLs addObject:[NSURL fileURLWithPath:path.toNSString()]];
|
||||
|
||||
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:pathURLs];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,6 +62,10 @@
|
|||
#include "transferlistsortmodel.h"
|
||||
#include "updownratiodlg.h"
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include "macutilities.h"
|
||||
#endif
|
||||
|
||||
namespace
|
||||
{
|
||||
using ToggleFn = std::function<void (Qt::CheckState)>;
|
||||
|
@ -548,6 +552,15 @@ void TransferListWidget::hidePriorityColumn(bool hide)
|
|||
void TransferListWidget::openSelectedTorrentsFolder() const
|
||||
{
|
||||
QSet<QString> pathsList;
|
||||
#ifdef Q_OS_MAC
|
||||
// On macOS you expect both the files and folders to be opened in their parent
|
||||
// folders prehilighted for opening, so we use a custom method.
|
||||
foreach (BitTorrent::TorrentHandle *const torrent, getSelectedTorrents()) {
|
||||
QString path = torrent->contentPath(true);
|
||||
pathsList.insert(path);
|
||||
}
|
||||
openFiles(pathsList);
|
||||
#else
|
||||
foreach (BitTorrent::TorrentHandle *const torrent, getSelectedTorrents()) {
|
||||
QString path = torrent->contentPath(true);
|
||||
if (!pathsList.contains(path)) {
|
||||
|
@ -558,6 +571,7 @@ void TransferListWidget::openSelectedTorrentsFolder() const
|
|||
}
|
||||
pathsList.insert(path);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void TransferListWidget::previewSelectedTorrents()
|
||||
|
|
Loading…
Reference in a new issue