1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-23 17:30:17 +01:00

Menu shortcut hiding has been removed

It had been causing problems in Unity for a while now and they
were missing on OSX as well in wx3.  So, the old menu Open/Close
method of hiding has been removed and replaced with an event
filter/monitor which looks for wxEVT_CHAR_HOOK events to pass
key events to the handler that has the keyboard captured.
This commit is contained in:
Leland Lucius
2015-07-28 14:35:09 -05:00
parent 44c9a7b864
commit 5bdfcff97d
19 changed files with 309 additions and 490 deletions

View File

@@ -1085,20 +1085,7 @@ bool LabelTrack::PasteSelectedText(double sel0, double sel1)
/// @return true if the text data is available in the clipboard, false otherwise
bool LabelTrack::IsTextClipSupported()
{
#if defined(__WXGTK__)
// AWD: work-around for bug 154: do not call wxClipboard::IsSupported()
// when handling a keyboard event
if (!wxGetApp().inKbdHandler) {
#endif
return wxTheClipboard->IsSupported(wxDF_TEXT);
#if defined (__WXGTK__)
}
// In keyboard handler; return false for now
return false;
#endif
return wxTheClipboard->IsSupported(wxDF_TEXT);
}
@@ -1607,18 +1594,22 @@ bool LabelTrack::CaptureKey(wxKeyEvent & event)
{
// Cache the keycode
int keyCode = event.GetKeyCode();
// Check for modifiers -- this does what wxKeyEvent::HasModifiers() should
// do (it checks Control instead of CMD on Mac)
bool hasMods = ((event.GetModifiers() & (wxMOD_CMD | wxMOD_ALT)) != 0);
if (hasMods) {
return false;
}
if (mSelIndex >= 0) {
if (IsGoodLabelEditKey(keyCode) && !hasMods) {
if (IsGoodLabelEditKey(keyCode)) {
return true;
}
}
else
{
if( IsGoodLabelFirstKey(keyCode) && !hasMods)
if (IsGoodLabelFirstKey(keyCode))
{
AudacityProject * pProj = GetActiveProject();
@@ -1631,14 +1622,16 @@ bool LabelTrack::CaptureKey(wxKeyEvent & event)
double t0, t1;
pProj->GetPlayRegion(&t0, &t1);
if (pProj->mViewInfo.selectedRegion.t0() == t0 &&
pProj->mViewInfo.selectedRegion.t1() == t1)
pProj->mViewInfo.selectedRegion.t1() == t1) {
return false;
}
}
// If there's a label there already don't capture
if( GetLabelIndex(pProj->mViewInfo.selectedRegion.t0(),
pProj->mViewInfo.selectedRegion.t1()) != wxNOT_FOUND )
pProj->mViewInfo.selectedRegion.t1()) != wxNOT_FOUND ) {
return false;
}
return true;
}
@@ -1830,7 +1823,9 @@ bool LabelTrack::OnKeyDown(SelectedRegion &newSel, wxKeyEvent & event)
break;
default:
event.Skip();
if (!IsGoodLabelEditKey(keyCode)) {
event.Skip();
}
break;
}
}
@@ -1872,7 +1867,9 @@ bool LabelTrack::OnKeyDown(SelectedRegion &newSel, wxKeyEvent & event)
break;
default:
event.Skip();
if (!IsGoodLabelFirstKey(keyCode)) {
event.Skip();
}
break;
}
}
@@ -2699,7 +2696,10 @@ bool LabelTrack::IsGoodLabelFirstKey(int keyCode)
&& keyCode != WXK_SPACE && keyCode != WXK_DELETE && keyCode != WXK_RETURN) ||
(keyCode >= WXK_NUMPAD0 && keyCode <= WXK_DIVIDE) ||
(keyCode >= WXK_NUMPAD_EQUAL && keyCode <= WXK_NUMPAD_DIVIDE) ||
(keyCode > WXK_COMMAND);
#if defined(__WXMAC__)
(keyCode > WXK_RAW_CONTROL) ||
#endif
(keyCode > WXK_WINDOWS_MENU);
}
/// This returns true for keys we capture for label editing.
@@ -2715,7 +2715,10 @@ bool LabelTrack::IsGoodLabelEditKey(int keyCode)
(keyCode >= WXK_NUMPAD_SPACE && keyCode <= WXK_NUMPAD_ENTER) ||
(keyCode >= WXK_NUMPAD_HOME && keyCode <= WXK_NUMPAD_END) ||
(keyCode >= WXK_NUMPAD_DELETE && keyCode <= WXK_NUMPAD_DIVIDE) ||
keyCode > WXK_COMMAND;
#if defined(__WXMAC__)
(keyCode > WXK_RAW_CONTROL) ||
#endif
(keyCode > WXK_WINDOWS_MENU);
}
/// Sorts the labels in order of their starting times.