mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-10 16:43:33 +02:00
Fix keyboard handling in Lyrics and MixerBoard windows
Apparently, this hasn't worked for a while. At least back to 2.0.6 anyway.
This commit is contained in:
@@ -69,7 +69,7 @@ void HighlightTextCtrl::OnMouseEvent(wxMouseEvent& event)
|
||||
//v static const kHighlightTextCtrlID = 7654;
|
||||
|
||||
BEGIN_EVENT_TABLE(Lyrics, wxPanel)
|
||||
EVT_CHAR(Lyrics::OnKeyEvent)
|
||||
EVT_KEY_DOWN(Lyrics::OnKeyEvent)
|
||||
EVT_PAINT(Lyrics::OnPaint)
|
||||
EVT_SIZE(Lyrics::OnSize)
|
||||
|
||||
@@ -442,7 +442,8 @@ void Lyrics::Update(double t)
|
||||
|
||||
void Lyrics::OnKeyEvent(wxKeyEvent & event)
|
||||
{
|
||||
GetActiveProject()->HandleKeyDown(event);
|
||||
AudacityProject *project = GetActiveProject();
|
||||
project->GetCommandManager()->FilterKeyEvent(project, event, true);
|
||||
}
|
||||
|
||||
void Lyrics::OnPaint(wxPaintEvent & WXUNUSED(event))
|
||||
|
@@ -140,7 +140,6 @@ enum {
|
||||
};
|
||||
|
||||
BEGIN_EVENT_TABLE(MixerTrackCluster, wxPanel)
|
||||
EVT_CHAR(MixerTrackCluster::OnKeyEvent)
|
||||
EVT_MOUSE_EVENTS(MixerTrackCluster::OnMouseEvent)
|
||||
EVT_PAINT(MixerTrackCluster::OnPaint)
|
||||
|
||||
@@ -753,11 +752,6 @@ void MixerTrackCluster::HandleSelect(const bool bShiftDown)
|
||||
}
|
||||
}
|
||||
|
||||
void MixerTrackCluster::OnKeyEvent(wxKeyEvent & event)
|
||||
{
|
||||
mProject->HandleKeyDown(event);
|
||||
}
|
||||
|
||||
void MixerTrackCluster::OnMouseEvent(wxMouseEvent& event)
|
||||
{
|
||||
if (event.ButtonUp())
|
||||
@@ -1732,6 +1726,7 @@ void MixerBoard::OnTimer(wxCommandEvent &event)
|
||||
// class MixerBoardFrame
|
||||
|
||||
BEGIN_EVENT_TABLE(MixerBoardFrame, wxFrame)
|
||||
EVT_KEY_DOWN(MixerBoardFrame::OnKeyEvent)
|
||||
EVT_CLOSE(MixerBoardFrame::OnCloseWindow)
|
||||
EVT_MAXIMIZE(MixerBoardFrame::OnMaximize)
|
||||
EVT_SIZE(MixerBoardFrame::OnSize)
|
||||
@@ -1796,3 +1791,11 @@ void MixerBoardFrame::OnSize(wxSizeEvent & WXUNUSED(event))
|
||||
{
|
||||
mMixerBoard->SetSize(this->GetClientSize());
|
||||
}
|
||||
|
||||
void MixerBoardFrame::OnKeyEvent(wxKeyEvent & event)
|
||||
{
|
||||
AudacityProject *project = GetActiveProject();
|
||||
project->GetCommandManager()->FilterKeyEvent(project, event, true);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -308,6 +308,7 @@ private:
|
||||
void OnCloseWindow(wxCloseEvent &WXUNUSED(event));
|
||||
void OnMaximize(wxMaximizeEvent &event);
|
||||
void OnSize(wxSizeEvent &evt);
|
||||
void OnKeyEvent(wxKeyEvent &evt);
|
||||
|
||||
public:
|
||||
MixerBoard* mMixerBoard;
|
||||
|
@@ -1042,7 +1042,7 @@ void CommandManager::TellUserWhyDisallowed( wxUint32 flagsGot, wxUint32 flagsReq
|
||||
///
|
||||
///
|
||||
///
|
||||
bool CommandManager::FilterKeyEvent(AudacityProject *project, wxKeyEvent & evt)
|
||||
bool CommandManager::FilterKeyEvent(AudacityProject *project, wxKeyEvent & evt, bool permit)
|
||||
{
|
||||
if (HandleMeta(evt))
|
||||
{
|
||||
@@ -1050,7 +1050,7 @@ bool CommandManager::FilterKeyEvent(AudacityProject *project, wxKeyEvent & evt)
|
||||
}
|
||||
|
||||
// Any other keypresses must be destined for this project window.
|
||||
if (wxGetTopLevelParent(wxWindow::FindFocus()) != project)
|
||||
if (!permit && wxGetTopLevelParent(wxWindow::FindFocus()) != project)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -1067,13 +1067,6 @@ bool CommandManager::FilterKeyEvent(AudacityProject *project, wxKeyEvent & evt)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (project->HandleKeyDown(evt))
|
||||
{
|
||||
wxKeyEvent temp = evt;
|
||||
temp.SetEventType(wxEVT_KEY_UP);
|
||||
project->HandleKeyUp(temp);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -179,13 +179,17 @@ class AUDACITY_DLL_API CommandManager: public XMLTagHandler
|
||||
//
|
||||
// Modifying accelerators
|
||||
//
|
||||
|
||||
void SetKeyFromName(wxString name, wxString key);
|
||||
void SetKeyFromIndex(int i, wxString key);
|
||||
|
||||
//
|
||||
// Executing commands
|
||||
//
|
||||
bool FilterKeyEvent(AudacityProject *project, wxKeyEvent & evt);
|
||||
|
||||
// "permit" allows filtering even if the active window is a child of the project.
|
||||
// Lyrics and MixerTrackCluster classes use it.
|
||||
bool FilterKeyEvent(AudacityProject *project, wxKeyEvent & evt, bool permit = false);
|
||||
bool HandleCommandEntry(CommandListEntry * entry, wxUint32 flags, wxUint32 mask, const wxEvent * evt = NULL);
|
||||
bool HandleMenuID(int id, wxUint32 flags, wxUint32 mask);
|
||||
bool HandleKey(wxKeyEvent &evt, wxUint32 flags, wxUint32 mask);
|
||||
|
Reference in New Issue
Block a user