1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-16 16:47:41 +02:00

Bug 2692 - Mac: VI users get trapped in radio buttons of Keyboard Preferences

This also corrects similar problems in other locations as well.
This commit is contained in:
Leland Lucius 2021-04-01 20:00:12 -05:00
parent cf09d4feea
commit 7a55c90b9d
5 changed files with 140 additions and 89 deletions

View File

@ -854,7 +854,7 @@ void TimerRecordDialog::PopulateOrExchange(ShuttleGui& S)
m_pTimerSavePathTextCtrl = NewPathControl(
S.GetParent(), ID_AUTOSAVEPATH_TEXT,
XO("Save Project As:"), sInitialValue);
m_pTimerSavePathTextCtrl->SetEditable(false);
m_pTimerSavePathTextCtrl->SetReadOnly(true);
S.AddWindow(m_pTimerSavePathTextCtrl);
m_pTimerSavePathButtonCtrl = S.Id(ID_AUTOSAVEPATH_BUTTON).AddButton(XXO("Select..."));
}
@ -871,7 +871,7 @@ void TimerRecordDialog::PopulateOrExchange(ShuttleGui& S)
m_pTimerExportPathTextCtrl = NewPathControl(
S.GetParent(), ID_AUTOEXPORTPATH_TEXT,
XO("Export Project As:"), {});
m_pTimerExportPathTextCtrl->SetEditable(false);
m_pTimerExportPathTextCtrl->SetReadOnly(true);
S.AddWindow(m_pTimerExportPathTextCtrl);
m_pTimerExportPathButtonCtrl = S.Id(ID_AUTOEXPORTPATH_BUTTON).AddButton(XXO("Select..."));
}

View File

@ -345,18 +345,25 @@ void ExportMP3Options::PopulateOrExchange(ShuttleGui & S)
S.StartTwoColumn();
{
S.AddPrompt(XXO("Bit Rate Mode:"));
S.StartHorizontalLay();
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
S.StartRadioButtonGroup(MP3RateModeSetting);
S.StartHorizontalLay();
{
mSET = S.Id(ID_SET).TieRadioButton();
mVBR = S.Id(ID_VBR).TieRadioButton();
mABR = S.Id(ID_ABR).TieRadioButton();
mCBR = S.Id(ID_CBR).TieRadioButton();
S.StartRadioButtonGroup(MP3RateModeSetting);
{
mSET = S.Id(ID_SET).TieRadioButton();
mVBR = S.Id(ID_VBR).TieRadioButton();
mABR = S.Id(ID_ABR).TieRadioButton();
mCBR = S.Id(ID_CBR).TieRadioButton();
}
S.EndRadioButtonGroup();
}
S.EndRadioButtonGroup();
S.EndHorizontalLay();
}
S.EndHorizontalLay();
S.EndPanel();
/* PRL: unfortunately this bit of procedural code must
interrupt the mostly-declarative dialog description, until
@ -407,20 +414,30 @@ void ExportMP3Options::PopulateOrExchange(ShuttleGui & S)
varModeNames );
S.AddPrompt(XXO("Channel Mode:"));
S.StartMultiColumn(3, wxEXPAND);
S.StartMultiColumn(2, wxEXPAND);
{
S.StartRadioButtonGroup(MP3ChannelModeSetting);
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
mJoint = S.Disable(mono)
.TieRadioButton();
mStereo = S.Disable(mono)
.TieRadioButton();
S.StartHorizontalLay();
{
S.StartRadioButtonGroup(MP3ChannelModeSetting);
{
mJoint = S.Disable(mono)
.TieRadioButton();
mStereo = S.Disable(mono)
.TieRadioButton();
}
S.EndRadioButtonGroup();
}
S.EndHorizontalLay();
}
S.EndRadioButtonGroup();
S.EndPanel();
mMono = S.Id(ID_MONO).AddCheckBox(XXO("Force export to mono"), mono);
}
S.EndTwoColumn();
S.EndMultiColumn();
}
S.EndTwoColumn();
}

View File

@ -329,15 +329,22 @@ void ExportMultipleDialog::PopulateOrExchange(ShuttleGui& S)
{
// Row 1
S.SetBorder(1);
mTrack = S.Id(TrackID)
.AddRadioButton(XXO("Tracks"));
// Row 2
S.SetBorder(1);
mLabel = S.Id(LabelID)
.AddRadioButtonToGroup(XXO("Labels"));
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
mTrack = S.Id(TrackID)
.AddRadioButton(XXO("Tracks"));
// Row 2
S.SetBorder(1);
mLabel = S.Id(LabelID)
.AddRadioButtonToGroup(XXO("Labels"));
}
S.EndPanel();
S.SetBorder(3);
S.StartMultiColumn(2, wxEXPAND);
S.SetStretchyCol(1);
{
@ -372,23 +379,30 @@ void ExportMultipleDialog::PopulateOrExchange(ShuttleGui& S)
S.StartStatic(XO("Name files:"), 1);
{
S.SetBorder(2);
S.StartRadioButtonGroup({
wxT("/Export/TrackNameWithOrWithoutNumbers"),
{
{ wxT("labelTrack"), XXO("Using Label/Track Name") },
{ wxT("numberBefore"), XXO("Numbering before Label/Track Name") },
{ wxT("numberAfter"), XXO("Numbering after File name prefix") },
},
0 // labelTrack
});
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
mByName = S.Id(ByNameID).TieRadioButton();
S.StartRadioButtonGroup({
wxT("/Export/TrackNameWithOrWithoutNumbers"),
{
{ wxT("labelTrack"), XXO("Using Label/Track Name") },
{ wxT("numberBefore"), XXO("Numbering before Label/Track Name") },
{ wxT("numberAfter"), XXO("Numbering after File name prefix") },
},
0 // labelTrack
});
{
mByName = S.Id(ByNameID).TieRadioButton();
mByNumberAndName = S.Id(ByNameAndNumberID).TieRadioButton();
mByNumberAndName = S.Id(ByNameAndNumberID).TieRadioButton();
mByNumber = S.Id(ByNumberID).TieRadioButton();
mByNumber = S.Id(ByNumberID).TieRadioButton();
}
S.EndRadioButtonGroup();
}
S.EndRadioButtonGroup();
S.EndPanel();
S.StartMultiColumn(3, wxEXPAND);
S.SetStretchyCol(2);

View File

@ -110,12 +110,18 @@ void ImportExportPrefs::PopulateOrExchange(ShuttleGui & S)
S.StartStatic(XO("When exporting tracks to an audio file"));
{
S.StartRadioButtonGroup(ImportExportPrefs::ExportDownMixSetting);
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
S.TieRadioButton();
S.TieRadioButton();
S.StartRadioButtonGroup(ImportExportPrefs::ExportDownMixSetting);
{
S.TieRadioButton();
S.TieRadioButton();
}
S.EndRadioButtonGroup();
}
S.EndRadioButtonGroup();
S.EndPanel();
S.TieCheckBox(XXO("S&how Metadata Tags editor before export"),
{wxT("/AudioFiles/ShowId3Dialog"),
@ -129,24 +135,36 @@ void ImportExportPrefs::PopulateOrExchange(ShuttleGui & S)
S.StartStatic(XO("Exported Label Style:"));
{
S.StartRadioButtonGroup(ImportExportPrefs::LabelStyleSetting);
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
S.TieRadioButton();
S.TieRadioButton();
S.StartRadioButtonGroup(ImportExportPrefs::LabelStyleSetting);
{
S.TieRadioButton();
S.TieRadioButton();
}
S.EndRadioButtonGroup();
}
S.EndRadioButtonGroup();
S.EndPanel();
}
S.EndStatic();
#ifdef USE_MIDI
S.StartStatic(XO("Exported Allegro (.gro) files save time as:"));
{
S.StartRadioButtonGroup(ImportExportPrefs::AllegroStyleSetting);
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
S.TieRadioButton();
S.TieRadioButton();
S.StartRadioButtonGroup(ImportExportPrefs::AllegroStyleSetting);
{
S.TieRadioButton();
S.TieRadioButton();
}
S.EndRadioButtonGroup();
}
S.EndRadioButtonGroup();
S.EndPanel();
}
S.EndStatic();
#endif

View File

@ -176,52 +176,53 @@ void KeyConfigPrefs::PopulateOrExchange(ShuttleGui & S)
S.StartStatic(XO("Key Bindings"), 1);
{
S.StartMultiColumn(3, wxEXPAND);
S.StartHorizontalLay(wxEXPAND, 0);
{
S.SetStretchyCol(1);
S.Position(wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL).AddTitle(XO("View by:"));
S.StartHorizontalLay(wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
// Bug 2692: Place button group in panel so tabbing will work and,
// on the Mac, VoiceOver will announce as radio buttons.
S.StartPanel();
{
S.AddTitle(XO("View by:"));
S.StartRadioButtonGroup({
wxT("/Prefs/KeyConfig/ViewBy"),
{
{ wxT("tree"), XXO("&Tree") },
{ wxT("name"), XXO("&Name") },
{ wxT("key"), XXO("&Key") },
},
0 // tree
});
S.StartHorizontalLay();
{
mViewByTree = S.Id(ViewByTreeID)
.Name(XO("View by tree"))
.TieRadioButton();
mViewByName = S.Id(ViewByNameID)
.Name(XO("View by name"))
.TieRadioButton();
mViewByKey = S.Id(ViewByKeyID)
.Name(XO("View by key"))
.TieRadioButton();
#if wxUSE_ACCESSIBILITY
// so that name can be set on a standard control
if (mViewByTree) mViewByTree->SetAccessible(safenew WindowAccessible(mViewByTree));
if (mViewByName) mViewByName->SetAccessible(safenew WindowAccessible(mViewByName));
if (mViewByKey) mViewByKey->SetAccessible(safenew WindowAccessible(mViewByKey));
S.StartRadioButtonGroup({
wxT("/Prefs/KeyConfig/ViewBy"),
{
{ wxT("tree"), XXO("&Tree") },
{ wxT("name"), XXO("&Name") },
{ wxT("key"), XXO("&Key") },
},
0 // tree
});
{
mViewByTree = S.Id(ViewByTreeID)
.Name(XO("View by tree"))
.TieRadioButton();
mViewByName = S.Id(ViewByNameID)
.Name(XO("View by name"))
.TieRadioButton();
mViewByKey = S.Id(ViewByKeyID)
.Name(XO("View by key"))
.TieRadioButton();
#if !defined(__WXMAC__) && wxUSE_ACCESSIBILITY
// so that name can be set on a standard control
if (mViewByTree) mViewByTree->SetAccessible(safenew WindowAccessible(mViewByTree));
if (mViewByName) mViewByName->SetAccessible(safenew WindowAccessible(mViewByName));
if (mViewByKey) mViewByKey->SetAccessible(safenew WindowAccessible(mViewByKey));
#endif
}
S.EndRadioButtonGroup();
}
S.EndRadioButtonGroup();
S.EndHorizontalLay();
}
S.EndHorizontalLay();
S.EndPanel();
S.StartHorizontalLay(wxALIGN_CENTER|wxALIGN_CENTER_VERTICAL, 0);
{
// just a spacer
}
S.EndHorizontalLay();
S.AddSpace(wxDefaultCoord, wxDefaultCoord, 1);
S.StartHorizontalLay(wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 0);
S.StartHorizontalLay(wxALIGN_CENTER_VERTICAL, 0);
{
mFilterLabel = S.AddVariableText(XO("Searc&h:"));
mFilterLabel = S.Position(wxALIGN_CENTER_VERTICAL).AddVariableText(XO("Searc&h:"));
if (!mFilter) {
mFilter = safenew wxTextCtrl(S.GetParent(),
@ -245,8 +246,9 @@ void KeyConfigPrefs::PopulateOrExchange(ShuttleGui & S)
}
S.EndHorizontalLay();
}
S.EndThreeColumn();
S.AddSpace(-1, 2);
S.EndHorizontalLay();
S.AddSpace(wxDefaultCoord, 2);
S.StartHorizontalLay(wxEXPAND, 1);
{
@ -273,7 +275,7 @@ void KeyConfigPrefs::PopulateOrExchange(ShuttleGui & S)
wxSize(210, -1),
#endif
wxTE_PROCESS_ENTER);
#if wxUSE_ACCESSIBILITY
#if !defined(__WXMAC__) && wxUSE_ACCESSIBILITY
// so that name can be set on a standard control
mKey->SetAccessible(safenew WindowAccessible(mKey));
#endif