]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/cmdproc.h
[ 1522987 ] wxComboCtrl crashes if TAB is pressed while popup is open
[wxWidgets.git] / include / wx / cmdproc.h
index 8f619cb8390649845a197d836b5d39de6bd4aba9..de7d68429c7525d40e189ac6d41d2f7d751f98c4 100644 (file)
 #ifndef _WX_CMDPROC_H_
 #define _WX_CMDPROC_H_
 
 #ifndef _WX_CMDPROC_H_
 #define _WX_CMDPROC_H_
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma interface "cmdproc.h"
-#endif
-
 #include "wx/defs.h"
 #include "wx/object.h"
 #include "wx/list.h"
 #include "wx/defs.h"
 #include "wx/object.h"
 #include "wx/list.h"
@@ -30,7 +26,7 @@ class WXDLLEXPORT wxCommand : public wxObject
 {
 public:
     wxCommand(bool canUndoIt = false, const wxString& name = wxEmptyString);
 {
 public:
     wxCommand(bool canUndoIt = false, const wxString& name = wxEmptyString);
-    ~wxCommand(){};
+    ~wxCommand(){}
 
     // Override this to perform a command
     virtual bool Do() = 0;
 
     // Override this to perform a command
     virtual bool Do() = 0;
@@ -91,7 +87,8 @@ public:
 #endif // wxUSE_MENUS
 
     // command list access
 #endif // wxUSE_MENUS
 
     // command list access
-    wxList& GetCommands() const { return (wxList&) m_commands; }
+    wxList& GetCommands() { return m_commands; }
+    const wxList& GetCommands() const { return m_commands; }
     wxCommand *GetCurrentCommand() const
     {
         return (wxCommand *)(m_currentCommand ? m_currentCommand->GetData() : NULL);
     wxCommand *GetCurrentCommand() const
     {
         return (wxCommand *)(m_currentCommand ? m_currentCommand->GetData() : NULL);
@@ -99,6 +96,19 @@ public:
     int GetMaxCommands() const { return m_maxNoCommands; }
     virtual void ClearCommands();
 
     int GetMaxCommands() const { return m_maxNoCommands; }
     virtual void ClearCommands();
 
+    // Has the current project been changed?
+    virtual bool IsDirty() const
+    {
+        return m_currentCommand && (m_lastSavedCommand != m_currentCommand);
+    }
+
+    // Mark the current command as the one where the last save took place
+    void MarkAsSaved()
+    {
+        m_lastSavedCommand = m_currentCommand;
+    }
+
+
     // By default, the accelerators are "\tCtrl+Z" and "\tCtrl+Y"
     const wxString& GetUndoAccelerator() const { return m_undoAccelerator; }
     const wxString& GetRedoAccelerator() const { return m_redoAccelerator; }
     // By default, the accelerators are "\tCtrl+Z" and "\tCtrl+Y"
     const wxString& GetUndoAccelerator() const { return m_undoAccelerator; }
     const wxString& GetRedoAccelerator() const { return m_redoAccelerator; }
@@ -115,7 +125,8 @@ protected:
 
     int           m_maxNoCommands;
     wxList        m_commands;
 
     int           m_maxNoCommands;
     wxList        m_commands;
-    wxList::compatibility_iterator m_currentCommand;
+    wxList::compatibility_iterator m_currentCommand,
+                                   m_lastSavedCommand;
 
 #if wxUSE_MENUS
     wxMenu*       m_commandEditMenu;
 
 #if wxUSE_MENUS
     wxMenu*       m_commandEditMenu;
@@ -130,3 +141,4 @@ private:
 };
 
 #endif // _WX_CMDPROC_H_
 };
 
 #endif // _WX_CMDPROC_H_
+