mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 10:19:55 +00:00
flag newly merged documents as dirty (triggering an 'are you sure' dialogue when closing without saving first)
(cherry picked from commit c92898a5bc
)
Conflicts:
apps/opencs/model/doc/document.cpp
apps/opencs/model/doc/document.hpp
This commit is contained in:
parent
973c65bc82
commit
024a5405e0
3 changed files with 16 additions and 2 deletions
|
@ -2258,7 +2258,7 @@ CSMDoc::Document::Document (const Files::ConfigurationManager& configuration,
|
||||||
mSaving (&mSavingOperation),
|
mSaving (&mSavingOperation),
|
||||||
mResDir(resDir),
|
mResDir(resDir),
|
||||||
mRunner (mProjectPath), mPhysics(boost::shared_ptr<CSVWorld::PhysicsSystem>()),
|
mRunner (mProjectPath), mPhysics(boost::shared_ptr<CSVWorld::PhysicsSystem>()),
|
||||||
mIdCompletionManager(mData)
|
mIdCompletionManager(mData), mDirty (false)
|
||||||
{
|
{
|
||||||
if (mContentFiles.empty())
|
if (mContentFiles.empty())
|
||||||
throw std::runtime_error ("Empty content file sequence");
|
throw std::runtime_error ("Empty content file sequence");
|
||||||
|
@ -2322,7 +2322,7 @@ int CSMDoc::Document::getState() const
|
||||||
{
|
{
|
||||||
int state = 0;
|
int state = 0;
|
||||||
|
|
||||||
if (!mUndoStack.isClean())
|
if (!mUndoStack.isClean() || mDirty)
|
||||||
state |= State_Modified;
|
state |= State_Modified;
|
||||||
|
|
||||||
if (mSaving.isRunning())
|
if (mSaving.isRunning())
|
||||||
|
@ -2414,6 +2414,9 @@ void CSMDoc::Document::reportMessage (const CSMDoc::Message& message, int type)
|
||||||
|
|
||||||
void CSMDoc::Document::operationDone (int type, bool failed)
|
void CSMDoc::Document::operationDone (int type, bool failed)
|
||||||
{
|
{
|
||||||
|
if (type==CSMDoc::State_Saving && !failed)
|
||||||
|
mDirty = false;
|
||||||
|
|
||||||
emit stateChanged (getState(), this);
|
emit stateChanged (getState(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2498,3 +2501,8 @@ CSMWorld::IdCompletionManager &CSMDoc::Document::getIdCompletionManager()
|
||||||
{
|
{
|
||||||
return mIdCompletionManager;
|
return mIdCompletionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSMDoc::Document::flagAsDirty()
|
||||||
|
{
|
||||||
|
mDirty = true;
|
||||||
|
}
|
||||||
|
|
|
@ -67,6 +67,8 @@ namespace CSMDoc
|
||||||
Blacklist mBlacklist;
|
Blacklist mBlacklist;
|
||||||
Runner mRunner;
|
Runner mRunner;
|
||||||
boost::shared_ptr<CSVWorld::PhysicsSystem> mPhysics;
|
boost::shared_ptr<CSVWorld::PhysicsSystem> mPhysics;
|
||||||
|
bool mDirty;
|
||||||
|
|
||||||
CSMWorld::IdCompletionManager mIdCompletionManager;
|
CSMWorld::IdCompletionManager mIdCompletionManager;
|
||||||
|
|
||||||
// It is important that the undo stack is declared last, because on desctruction it fires a signal, that is connected to a slot, that is
|
// It is important that the undo stack is declared last, because on desctruction it fires a signal, that is connected to a slot, that is
|
||||||
|
@ -150,6 +152,8 @@ namespace CSMDoc
|
||||||
|
|
||||||
CSMWorld::IdCompletionManager &getIdCompletionManager();
|
CSMWorld::IdCompletionManager &getIdCompletionManager();
|
||||||
|
|
||||||
|
void flagAsDirty();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void stateChanged (int state, CSMDoc::Document *document);
|
void stateChanged (int state, CSMDoc::Document *document);
|
||||||
|
|
|
@ -213,6 +213,8 @@ void CSMTools::Tools::runMerge (std::auto_ptr<CSMDoc::Document> target)
|
||||||
this, SIGNAL (mergeDone (CSMDoc::Document*)));
|
this, SIGNAL (mergeDone (CSMDoc::Document*)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
target->flagAsDirty();
|
||||||
|
|
||||||
mMergeOperation->setTarget (target);
|
mMergeOperation->setTarget (target);
|
||||||
|
|
||||||
mMerge.start();
|
mMerge.start();
|
||||||
|
|
Loading…
Reference in a new issue