X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7e0b0eb38fadc78f7a92404e604420ab49158292..ab7049776d45e622f621dd06216a4c1a1ad34b15:/src/common/cmdproc.cpp diff --git a/src/common/cmdproc.cpp b/src/common/cmdproc.cpp index cb0d393049..5e8a253ccb 100644 --- a/src/common/cmdproc.cpp +++ b/src/common/cmdproc.cpp @@ -172,9 +172,9 @@ bool wxCommandProcessor::Redo() { wxCommand *redoCommand = NULL; wxList::compatibility_iterator redoNode -#if !wxUSE_STL +#if !wxUSE_STD_CONTAINERS = NULL // just to avoid warnings -#endif // !wxUSE_STL +#endif // !wxUSE_STD_CONTAINERS ; if ( m_currentCommand ) @@ -328,4 +328,28 @@ void wxCommandProcessor::ClearCommands() m_lastSavedCommand = wxList::compatibility_iterator(); } +bool wxCommandProcessor::IsDirty() const +{ + if ( m_commands.empty() ) + { + // If we have never been modified, we can't be dirty. + return false; + } + + if ( !m_lastSavedCommand ) + { + // If we have been modified but have never been saved, we're dirty. + return true; + } + + if ( !m_currentCommand ) + { + // This only happens if all commands were undone after saving the + // document: we're dirty then. + return true; + } + + // Finally if both iterators are valid, we may just compare them. + return m_currentCommand != m_lastSavedCommand; +}