// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "cmdproc.h"
#endif
wxCommandProcessor::wxCommandProcessor(int maxCommands)
{
m_maxNoCommands = maxCommands;
- m_currentCommand = (wxNode *) NULL;
#if wxUSE_MENUS
m_commandEditMenu = (wxMenu *) NULL;
#endif // wxUSE_MENUS
m_undoAccelerator = wxT("\tCtrl+Z");
m_redoAccelerator = wxT("\tCtrl+Y");
+#if !wxUSE_STL
+ m_currentCommand = NULL;
+#endif
}
wxCommandProcessor::~wxCommandProcessor()
if ( (int)m_commands.GetCount() == m_maxNoCommands )
{
- wxNode *firstNode = m_commands.GetFirst();
+ wxList::compatibility_iterator firstNode = m_commands.GetFirst();
wxCommand *firstCommand = (wxCommand *)firstNode->GetData();
delete firstCommand;
- delete firstNode;
+ m_commands.Erase(firstNode);
}
// Correct a bug: we must chop off the current 'branch'
ClearCommands();
else
{
- wxNode *node = m_currentCommand->GetNext();
+ wxList::compatibility_iterator node = m_currentCommand->GetNext();
while (node)
{
- wxNode *next = node->GetNext();
+ wxList::compatibility_iterator next = node->GetNext();
delete (wxCommand *)node->GetData();
- delete node;
+ m_commands.Erase(node);
node = next;
}
}
bool wxCommandProcessor::Redo()
{
wxCommand *redoCommand = (wxCommand *) NULL;
- wxNode *redoNode = (wxNode *) NULL;
+ wxList::compatibility_iterator redoNode
+#if !wxUSE_STL
+ = NULL // just to avoid warnings
+#endif // !wxUSE_STL
+ ;
if ( m_currentCommand )
{
bool wxCommandProcessor::CanRedo() const
{
- if ((m_currentCommand != (wxNode*) NULL) && (m_currentCommand->GetNext() == (wxNode*) NULL))
+ if (m_currentCommand && !m_currentCommand->GetNext())
return FALSE;
- if ((m_currentCommand != (wxNode*) NULL) && (m_currentCommand->GetNext() != (wxNode*) NULL))
+ if (m_currentCommand && m_currentCommand->GetNext())
return TRUE;
- if ((m_currentCommand == (wxNode*) NULL) && (m_commands.GetCount() > 0))
+ if (!m_currentCommand && (m_commands.GetCount() > 0))
return TRUE;
return FALSE;
void wxCommandProcessor::ClearCommands()
{
- wxNode *node = m_commands.GetFirst();
+ wxList::compatibility_iterator node = m_commands.GetFirst();
while (node)
{
wxCommand *command = (wxCommand *)node->GetData();
delete command;
- delete node;
+ m_commands.Erase(node);
node = m_commands.GetFirst();
}
- m_currentCommand = (wxNode *) NULL;
+ m_currentCommand = wxList::compatibility_iterator();
}