mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-07 05:31:25 -07:00
Fix the torrent relocates files when switching to "manual" mode
PR #22564. Closes #22283. Closes #22546.
This commit is contained in:
parent
009cc71f9b
commit
c687a7d0d3
2 changed files with 24 additions and 14 deletions
|
@ -974,23 +974,25 @@ bool SessionImpl::editCategory(const QString &name, const CategoryOptions &optio
|
||||||
if (options == currentOptions)
|
if (options == currentOptions)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
currentOptions = options;
|
|
||||||
storeCategories();
|
|
||||||
if (isDisableAutoTMMWhenCategorySavePathChanged())
|
if (isDisableAutoTMMWhenCategorySavePathChanged())
|
||||||
{
|
{
|
||||||
|
// This should be done before changing the category options
|
||||||
|
// to prevent the torrent from being moved at the new save path.
|
||||||
|
|
||||||
for (TorrentImpl *const torrent : asConst(m_torrents))
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
{
|
{
|
||||||
if (torrent->category() == name)
|
if (torrent->category() == name)
|
||||||
torrent->setAutoTMMEnabled(false);
|
torrent->setAutoTMMEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
currentOptions = options;
|
||||||
|
storeCategories();
|
||||||
|
|
||||||
|
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||||
{
|
{
|
||||||
for (TorrentImpl *const torrent : asConst(m_torrents))
|
if (torrent->category() == name)
|
||||||
{
|
torrent->handleCategoryOptionsChanged();
|
||||||
if (torrent->category() == name)
|
|
||||||
torrent->handleCategoryOptionsChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit categoryOptionsChanged(name);
|
emit categoryOptionsChanged(name);
|
||||||
|
@ -3247,6 +3249,9 @@ void SessionImpl::setSavePath(const Path &path)
|
||||||
|
|
||||||
if (isDisableAutoTMMWhenDefaultSavePathChanged())
|
if (isDisableAutoTMMWhenDefaultSavePathChanged())
|
||||||
{
|
{
|
||||||
|
// This should be done before changing the save path
|
||||||
|
// to prevent the torrent from being moved at the new save path.
|
||||||
|
|
||||||
QSet<QString> affectedCatogories {{}}; // includes default (unnamed) category
|
QSet<QString> affectedCatogories {{}}; // includes default (unnamed) category
|
||||||
for (auto it = m_categories.cbegin(); it != m_categories.cend(); ++it)
|
for (auto it = m_categories.cbegin(); it != m_categories.cend(); ++it)
|
||||||
{
|
{
|
||||||
|
@ -3276,6 +3281,9 @@ void SessionImpl::setDownloadPath(const Path &path)
|
||||||
|
|
||||||
if (isDisableAutoTMMWhenDefaultSavePathChanged())
|
if (isDisableAutoTMMWhenDefaultSavePathChanged())
|
||||||
{
|
{
|
||||||
|
// This should be done before changing the save path
|
||||||
|
// to prevent the torrent from being moved at the new save path.
|
||||||
|
|
||||||
QSet<QString> affectedCatogories {{}}; // includes default (unnamed) category
|
QSet<QString> affectedCatogories {{}}; // includes default (unnamed) category
|
||||||
for (auto it = m_categories.cbegin(); it != m_categories.cend(); ++it)
|
for (auto it = m_categories.cbegin(); it != m_categories.cend(); ++it)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1615,18 +1615,20 @@ bool TorrentImpl::setCategory(const QString &category)
|
||||||
if (!category.isEmpty() && !m_session->categories().contains(category))
|
if (!category.isEmpty() && !m_session->categories().contains(category))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (m_session->isDisableAutoTMMWhenCategoryChanged())
|
||||||
|
{
|
||||||
|
// This should be done before changing the category name
|
||||||
|
// to prevent the torrent from being moved at the path of new category.
|
||||||
|
setAutoTMMEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
const QString oldCategory = m_category;
|
const QString oldCategory = m_category;
|
||||||
m_category = category;
|
m_category = category;
|
||||||
deferredRequestResumeData();
|
deferredRequestResumeData();
|
||||||
m_session->handleTorrentCategoryChanged(this, oldCategory);
|
m_session->handleTorrentCategoryChanged(this, oldCategory);
|
||||||
|
|
||||||
if (m_useAutoTMM)
|
if (m_useAutoTMM)
|
||||||
{
|
adjustStorageLocation();
|
||||||
if (!m_session->isDisableAutoTMMWhenCategoryChanged())
|
|
||||||
adjustStorageLocation();
|
|
||||||
else
|
|
||||||
setAutoTMMEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue