#if wxUSE_MENUS
m_commandEditMenu = NULL;
#endif // wxUSE_MENUS
+
+#if wxUSE_ACCEL
m_undoAccelerator = '\t' + wxAcceleratorEntry(wxACCEL_CTRL, 'Z').ToString();
m_redoAccelerator = '\t' + wxAcceleratorEntry(wxACCEL_CTRL, 'Y').ToString();
+#endif // wxUSE_ACCEL
m_lastSavedCommand =
m_currentCommand = wxList::compatibility_iterator();
{
wxCHECK_RET( command, wxT("no command in wxCommandProcessor::Store") );
- if ( (int)m_commands.GetCount() == m_maxNoCommands )
- {
- wxList::compatibility_iterator firstNode = m_commands.GetFirst();
- wxCommand *firstCommand = (wxCommand *)firstNode->GetData();
- delete firstCommand;
- m_commands.Erase(firstNode);
-
- // Make sure m_lastSavedCommand won't point to freed memory
- if ( m_lastSavedCommand == firstNode )
- m_lastSavedCommand = wxList::compatibility_iterator();
- }
-
// Correct a bug: we must chop off the current 'branch'
// so that we're at the end of the command list.
if (!m_currentCommand)
while (node)
{
wxList::compatibility_iterator next = node->GetNext();
- delete (wxCommand *)node->GetData();
- m_commands.Erase(node);
// Make sure m_lastSavedCommand won't point to freed memory
- if ( m_lastSavedCommand == node )
+ if ( m_lastSavedCommand && m_lastSavedCommand == node )
m_lastSavedCommand = wxList::compatibility_iterator();
+ delete (wxCommand *)node->GetData();
+ m_commands.Erase(node);
+
node = next;
}
}
+ if ( (int)m_commands.GetCount() == m_maxNoCommands )
+ {
+ wxList::compatibility_iterator firstNode = m_commands.GetFirst();
+
+ // Make sure m_lastSavedCommand won't point to freed memory
+ if ( m_lastSavedCommand && m_lastSavedCommand == firstNode )
+ m_lastSavedCommand = wxList::compatibility_iterator();
+
+ wxCommand *firstCommand = (wxCommand *)firstNode->GetData();
+ delete firstCommand;
+ m_commands.Erase(firstNode);
+ }
+
m_commands.Append(command);
m_currentCommand = m_commands.GetLast();
SetMenuStrings();