1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-05 16:43:52 +01:00

AUP3: Fix a couple of accessibility issues in the History Dialog

This commit is contained in:
Leland Lucius
2020-08-05 08:56:44 -05:00
parent 81598541de
commit 486957fc91
2 changed files with 36 additions and 17 deletions

View File

@@ -57,6 +57,7 @@ enum {
}; };
BEGIN_EVENT_TABLE(HistoryDialog, wxDialogWrapper) BEGIN_EVENT_TABLE(HistoryDialog, wxDialogWrapper)
EVT_SHOW(HistoryDialog::OnShow)
EVT_SIZE(HistoryDialog::OnSize) EVT_SIZE(HistoryDialog::OnSize)
EVT_CLOSE(HistoryDialog::OnCloseWindow) EVT_CLOSE(HistoryDialog::OnCloseWindow)
EVT_LIST_ITEM_SELECTED(wxID_ANY, HistoryDialog::OnItemSelected) EVT_LIST_ITEM_SELECTED(wxID_ANY, HistoryDialog::OnItemSelected)
@@ -93,6 +94,7 @@ HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
{ {
mList = S mList = S
.MinSize() .MinSize()
.ConnectRoot(wxEVT_KEY_DOWN, &HistoryDialog::OnListKeyDown)
.AddListControlReportMode( .AddListControlReportMode(
{ { XO("Action"), wxLIST_FORMAT_LEFT, 260 }, { { XO("Action"), wxLIST_FORMAT_LEFT, 260 },
{ XO("Used Space"), wxLIST_FORMAT_LEFT, 125 } }, { XO("Used Space"), wxLIST_FORMAT_LEFT, 125 } },
@@ -105,15 +107,13 @@ HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
S.StartMultiColumn(3, wxCENTRE); S.StartMultiColumn(3, wxCENTRE);
{ {
mTotal = S.Id(ID_TOTAL) S.AddPrompt(XXO("&Total space used"));
.ConnectRoot(wxEVT_KEY_DOWN, &HistoryDialog::OnChar) mTotal = S.Id(ID_TOTAL).Style(wxTE_READONLY).AddTextBox({}, wxT(""), 10);
.AddTextBox(XXO("&Total space used"), wxT("0"), 10);
S.AddVariableText( {} )->Hide(); S.AddVariableText( {} )->Hide();
#if defined(ALLOW_DISCARD) #if defined(ALLOW_DISCARD)
mAvail = S.Id(ID_AVAIL) S.AddPrompt(XXO("&Undo levels available"));
.ConnectRoot(wxEVT_KEY_DOWN, &HistoryDialog::OnChar) mAvail = S.Id(ID_AVAIL).Style(wxTE_READONLY).AddTextBox({}, wxT(""), 10);
.AddTextBox(XXO("&Undo levels available"), wxT("0"), 10);
S.AddVariableText( {} )->Hide(); S.AddVariableText( {} )->Hide();
S.AddPrompt(XXO("&Levels to discard")); S.AddPrompt(XXO("&Levels to discard"));
@@ -130,9 +130,8 @@ HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
/* i18n-hint: (verb)*/ /* i18n-hint: (verb)*/
mDiscard = S.Id(ID_DISCARD).AddButton(XXO("&Discard")); mDiscard = S.Id(ID_DISCARD).AddButton(XXO("&Discard"));
#endif #endif
mClipboard = S S.AddPrompt(XXO("Clip&board space used"));
.ConnectRoot(wxEVT_KEY_DOWN, &HistoryDialog::OnChar) mClipboard = S.Style(wxTE_READONLY).AddTextBox({}, wxT(""), 10);
.AddTextBox(XXO("Clip&board space used"), wxT("0"), 10);
#if defined(ALLOW_DISCARD) #if defined(ALLOW_DISCARD)
S.Id(ID_DISCARD_CLIPBOARD).AddButton(XXO("D&iscard")); S.Id(ID_DISCARD_CLIPBOARD).AddButton(XXO("D&iscard"));
@@ -172,11 +171,6 @@ HistoryDialog::HistoryDialog(AudacityProject *parent, UndoManager *manager):
parent->Bind(EVT_UNDO_RESET, &HistoryDialog::UpdateDisplay, this); parent->Bind(EVT_UNDO_RESET, &HistoryDialog::UpdateDisplay, this);
} }
void HistoryDialog::OnChar( wxEvent& )
{
// ignore it
}
void HistoryDialog::OnAudioIO(wxCommandEvent& evt) void HistoryDialog::OnAudioIO(wxCommandEvent& evt)
{ {
evt.Skip(); evt.Skip();
@@ -346,9 +340,33 @@ void HistoryDialog::OnItemSelected(wxListEvent &event)
UpdateLevels(); UpdateLevels();
} }
void HistoryDialog::OnListKeyDown(wxKeyEvent & event)
{
switch (event.GetKeyCode())
{
case WXK_RETURN:
// Don't know why wxListCtrls prevent default dialog action,
// but they do, so handle it.
EmulateButtonClickIfPresent(GetAffirmativeId());
break;
default:
event.Skip();
break;
}
}
void HistoryDialog::OnCloseWindow(wxCloseEvent & WXUNUSED(event)) void HistoryDialog::OnCloseWindow(wxCloseEvent & WXUNUSED(event))
{ {
this->Show(false); this->Show(false);
}
void HistoryDialog::OnShow(wxShowEvent & event)
{
if (event.IsShown())
{
mList->SetFocus();
}
} }
void HistoryDialog::OnSize(wxSizeEvent & WXUNUSED(event)) void HistoryDialog::OnSize(wxSizeEvent & WXUNUSED(event))

View File

@@ -36,9 +36,10 @@ class HistoryDialog final : public wxDialogWrapper {
void DoUpdate(); void DoUpdate();
void UpdateLevels(); void UpdateLevels();
void OnChar(wxEvent &event); void OnShow(wxShowEvent & event);
void OnSize(wxSizeEvent & event); void OnSize(wxSizeEvent & event);
void OnCloseWindow(wxCloseEvent & WXUNUSED(event)); void OnCloseWindow(wxCloseEvent & event);
void OnListKeyDown(wxKeyEvent & event);
void OnItemSelected(wxListEvent & event); void OnItemSelected(wxListEvent & event);
void OnDiscard(wxCommandEvent & event); void OnDiscard(wxCommandEvent & event);
void OnDiscardClipboard(wxCommandEvent & event); void OnDiscardClipboard(wxCommandEvent & event);