1
0
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:
Leland Lucius
2015-08-09 18:23:32 -05:00
parent 9e0c0d1b34
commit 2a0f9da32d
5 changed files with 20 additions and 18 deletions

View File

@@ -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))

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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);