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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user