X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/17271c793e0d938dc4a189b540b6438ce1839230..e7300ec6d9ebbd1cfa2fcf12c0ce6e5aee85a152:/src/common/cmdproc.cpp diff --git a/src/common/cmdproc.cpp b/src/common/cmdproc.cpp index f6d7eb8dd5..afdc6fff29 100644 --- a/src/common/cmdproc.cpp +++ b/src/common/cmdproc.cpp @@ -68,6 +68,8 @@ wxCommandProcessor::wxCommandProcessor(int maxCommands) #if wxUSE_MENUS m_commandEditMenu = (wxMenu *) NULL; #endif // wxUSE_MENUS + m_undoAccelerator = wxT("\tCtrl+Z"); + m_redoAccelerator = wxT("\tCtrl+Y"); } wxCommandProcessor::~wxCommandProcessor() @@ -93,7 +95,12 @@ bool wxCommandProcessor::Submit(wxCommand *command, bool storeIt) wxCHECK_MSG( command, FALSE, _T("no command in wxCommandProcessor::Submit") ); if ( !DoCommand(*command) ) + { + // the user code expects the command to be deleted anyhow + delete command; + return FALSE; + } if ( storeIt ) Store(command); @@ -226,9 +233,9 @@ void wxCommandProcessor::SetMenuStrings() if (commandName == wxT("")) commandName = _("Unnamed command"); bool canUndo = command->CanUndo(); if (canUndo) - buf = wxString(_("&Undo ")) + commandName; + buf = wxString(_("&Undo ")) + commandName + m_undoAccelerator; else - buf = wxString(_("Can't &Undo ")) + commandName; + buf = wxString(_("Can't &Undo ")) + commandName + m_undoAccelerator; m_commandEditMenu->SetLabel(wxID_UNDO, buf); m_commandEditMenu->Enable(wxID_UNDO, canUndo); @@ -239,24 +246,24 @@ void wxCommandProcessor::SetMenuStrings() wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data(); wxString redoCommandName(redoCommand->GetName()); if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); - buf = wxString(_("&Redo ")) + redoCommandName; + buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; m_commandEditMenu->SetLabel(wxID_REDO, buf); m_commandEditMenu->Enable(wxID_REDO, TRUE); } else { - m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo")); + m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo") + m_redoAccelerator); m_commandEditMenu->Enable(wxID_REDO, FALSE); } } else { - m_commandEditMenu->SetLabel(wxID_UNDO, _("&Undo")); + m_commandEditMenu->SetLabel(wxID_UNDO, _("&Undo") + m_undoAccelerator); m_commandEditMenu->Enable(wxID_UNDO, FALSE); if (m_commands.Number() == 0) { - m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo")); + m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo") + m_redoAccelerator); m_commandEditMenu->Enable(wxID_REDO, FALSE); } else @@ -266,7 +273,7 @@ void wxCommandProcessor::SetMenuStrings() wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data(); wxString redoCommandName(redoCommand->GetName()); if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); - buf = wxString(_("&Redo ")) + redoCommandName; + buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; m_commandEditMenu->SetLabel(wxID_REDO, buf); m_commandEditMenu->Enable(wxID_REDO, TRUE); }