X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/17271c793e0d938dc4a189b540b6438ce1839230..a4353f07c6b37712634d4b2d86527b647a08044f:/src/common/cmdproc.cpp diff --git a/src/common/cmdproc.cpp b/src/common/cmdproc.cpp index f6d7eb8dd5..7945642565 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); @@ -213,6 +220,11 @@ void wxCommandProcessor::Initialize() SetMenuStrings(); } +static void wxSetMenuLabel(wxMenu* menu, int id, const wxString& label) +{ + menu->SetLabel(id, label); +} + void wxCommandProcessor::SetMenuStrings() { #if wxUSE_MENUS @@ -226,11 +238,12 @@ 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); + wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, buf); + m_commandEditMenu->Enable(wxID_UNDO, canUndo); // We can redo, if we're not at the end of the history. @@ -239,24 +252,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; - m_commandEditMenu->SetLabel(wxID_REDO, buf); + buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf); m_commandEditMenu->Enable(wxID_REDO, TRUE); } else { - m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo")); + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); m_commandEditMenu->Enable(wxID_REDO, FALSE); } } else { - m_commandEditMenu->SetLabel(wxID_UNDO, _("&Undo")); + wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, _("&Undo") + m_undoAccelerator); m_commandEditMenu->Enable(wxID_UNDO, FALSE); if (m_commands.Number() == 0) { - m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo")); + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); m_commandEditMenu->Enable(wxID_REDO, FALSE); } else @@ -266,8 +279,8 @@ void wxCommandProcessor::SetMenuStrings() wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data(); wxString redoCommandName(redoCommand->GetName()); if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); - buf = wxString(_("&Redo ")) + redoCommandName; - m_commandEditMenu->SetLabel(wxID_REDO, buf); + buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf); m_commandEditMenu->Enable(wxID_REDO, TRUE); } }