From 48704877ca1dc44b9215ec834e93f34fd953b2fb Mon Sep 17 00:00:00 2001 From: Tannin Date: Sun, 2 Feb 2014 00:09:03 +0100 Subject: - bugfix: upon moving files between mods, an attempt was made to access origins for both, even if one (or both) mods weren't active - bugfix: plugin-list should now deal with nested "layoutAboutToBeChanged" calls gracefully. May be the reason of a bug. --- src/mainwindow.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index cc7fbb09..88806cfd 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2849,17 +2849,21 @@ void MainWindow::fileMoved(const QString &filePath, const QString &oldOriginName const FileEntry::Ptr filePtr = m_DirectoryStructure->findFile(ToWString(filePath)); if (filePtr.get() != NULL) { try { - FilesOrigin &oldOrigin = m_DirectoryStructure->getOriginByName(ToWString(oldOriginName)); - FilesOrigin &newOrigin = m_DirectoryStructure->getOriginByName(ToWString(newOriginName)); + if (m_DirectoryStructure->originExists(ToWString(newOriginName))) { + FilesOrigin &newOrigin = m_DirectoryStructure->getOriginByName(ToWString(newOriginName)); - QString fullNewPath = ToQString(newOrigin.getPath()) + "\\" + filePath; - WIN32_FIND_DATAW findData; - ::FindFirstFileW(ToWString(fullNewPath).c_str(), &findData); + QString fullNewPath = ToQString(newOrigin.getPath()) + "\\" + filePath; + WIN32_FIND_DATAW findData; + ::FindFirstFileW(ToWString(fullNewPath).c_str(), &findData); - filePtr->addOrigin(newOrigin.getID(), findData.ftCreationTime, L""); - filePtr->removeOrigin(oldOrigin.getID()); + filePtr->addOrigin(newOrigin.getID(), findData.ftCreationTime, L""); + } + if (m_DirectoryStructure->originExists(ToWString(oldOriginName))) { + FilesOrigin &oldOrigin = m_DirectoryStructure->getOriginByName(ToWString(oldOriginName)); + filePtr->removeOrigin(oldOrigin.getID()); + } } catch (const std::exception &e) { - reportError(tr("Failed to move \"%1\" from mod \"%2\" to \"%3\": %4").arg(filePath).arg(oldOriginName).arg(newOriginName).arg(e.what())); + reportError(tr("failed to move \"%1\" from mod \"%2\" to \"%3\": %4").arg(filePath).arg(oldOriginName).arg(newOriginName).arg(e.what())); } } else { // this is probably not an error, the specified path is likely a directory -- cgit v1.3.1