diff --git a/src/AudacityApp.cpp b/src/AudacityApp.cpp index d9b72447f..74cddf0f5 100644 --- a/src/AudacityApp.cpp +++ b/src/AudacityApp.cpp @@ -1123,7 +1123,6 @@ int AudacityApp::FilterEvent(wxEvent & event) ((wxWindow *)e.GetEventObject())->SetFocus(); } } - break; #endif return Event_Skip; diff --git a/src/Menus.cpp b/src/Menus.cpp index f600d7e18..8b7d30a84 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -1194,7 +1194,7 @@ void AudacityProject::CreateMenusAndCommands() c->AddCommand(wxT("TrackGainInc"), _("Increase gain on focused track"), FN(OnTrackGainInc), wxT("Alt+Shift+Up")); c->AddCommand(wxT("TrackGainDec"), _("Decrease gain on focused track"), FN(OnTrackGainDec), wxT("Alt+Shift+Down")); // use "wantevent" to eat the KEY_UP event...fixes a problem on Windows where the key up selects the "Mono" item - c->AddCommand(wxT("TrackMenu"), _("Open menu on focused track"), FN(OnTrackMenu), wxT("Shift+M\twantevent")); + c->AddCommand(wxT("TrackMenu"), _("Open menu on focused track"), FN(OnTrackMenu), wxT("Shift+M\tignoredown")); c->AddCommand(wxT("TrackMute"), _("Mute/Unmute focused track"), FN(OnTrackMute), wxT("Shift+U")); c->AddCommand(wxT("TrackSolo"), _("Solo/Unsolo focused track"), FN(OnTrackSolo), wxT("Shift+S")); c->AddCommand(wxT("TrackClose"), _("Close focused track"), FN(OnTrackClose), wxT("Shift+C")); diff --git a/src/commands/CommandManager.cpp b/src/commands/CommandManager.cpp index ebfd98baa..b68859ff5 100644 --- a/src/commands/CommandManager.cpp +++ b/src/commands/CommandManager.cpp @@ -735,6 +735,7 @@ int CommandManager::NewIdentifier(wxString name, tmpEntry->mask = mDefaultMask; tmpEntry->enabled = true; tmpEntry->wantevent = (label.Find(wxT("\twantevent")) != wxNOT_FOUND); + tmpEntry->ignoredown = (label.Find(wxT("\tignoredown")) != wxNOT_FOUND); tmpEntry->isMeta = false; // Key from preferences overridse the default key given @@ -985,14 +986,18 @@ bool CommandManager::HandleKey(wxKeyEvent &evt, wxUint32 flags, wxUint32 mask) { wxString keyStr = KeyEventToKeyString(evt); CommandListEntry *entry = mCommandKeyHash[keyStr]; - if (evt.GetEventType() == wxEVT_KEY_DOWN) - { - return HandleCommandEntry( entry, flags, mask, &evt ); - } - if (entry && entry->wantevent) + if (entry) { - return HandleCommandEntry( entry, flags, mask, &evt ); + if (evt.GetEventType() == wxEVT_KEY_DOWN && !entry->ignoredown) + { + return HandleCommandEntry( entry, flags, mask, &evt ); + } + + if (evt.GetEventType() == wxEVT_KEY_UP && (entry->wantevent || entry->ignoredown)) + { + return HandleCommandEntry( entry, flags, mask, &evt ); + } } return false; diff --git a/src/commands/CommandManager.h b/src/commands/CommandManager.h index 221e61831..4b2556028 100644 --- a/src/commands/CommandManager.h +++ b/src/commands/CommandManager.h @@ -58,6 +58,7 @@ struct CommandListEntry int count; bool enabled; bool wantevent; + bool ignoredown; bool isMeta; wxUint32 flags; wxUint32 mask; diff --git a/src/prefs/KeyConfigPrefs.cpp b/src/prefs/KeyConfigPrefs.cpp index 8f56c48cc..b8b44c677 100644 --- a/src/prefs/KeyConfigPrefs.cpp +++ b/src/prefs/KeyConfigPrefs.cpp @@ -418,9 +418,9 @@ void KeyConfigPrefs::OnHotkeyKeyDown(wxKeyEvent & e) // active, buttons on the Mac do not accept focus and all the // controls between this one and the tree control are buttons. if (e.GetKeyCode() == WXK_TAB) { - Navigate(e.ShiftDown() - ? wxNavigationKeyEvent::IsBackward - : wxNavigationKeyEvent::IsForward); + NavigateIn(e.ShiftDown() + ? wxNavigationKeyEvent::IsBackward + : wxNavigationKeyEvent::IsForward); return; }