diff --git a/src/TimerRecordDialog.cpp b/src/TimerRecordDialog.cpp index 13f99086a..1b7443b24 100644 --- a/src/TimerRecordDialog.cpp +++ b/src/TimerRecordDialog.cpp @@ -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...")); } diff --git a/src/export/ExportMP3.cpp b/src/export/ExportMP3.cpp index b9e65691b..2ae7cddcd 100644 --- a/src/export/ExportMP3.cpp +++ b/src/export/ExportMP3.cpp @@ -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(); } diff --git a/src/export/ExportMultiple.cpp b/src/export/ExportMultiple.cpp index f5f092718..8734d2499 100644 --- a/src/export/ExportMultiple.cpp +++ b/src/export/ExportMultiple.cpp @@ -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); diff --git a/src/prefs/ImportExportPrefs.cpp b/src/prefs/ImportExportPrefs.cpp index c017d4205..24e0ee017 100644 --- a/src/prefs/ImportExportPrefs.cpp +++ b/src/prefs/ImportExportPrefs.cpp @@ -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 diff --git a/src/prefs/KeyConfigPrefs.cpp b/src/prefs/KeyConfigPrefs.cpp index 9f98ac0c5..8dcc7964e 100644 --- a/src/prefs/KeyConfigPrefs.cpp +++ b/src/prefs/KeyConfigPrefs.cpp @@ -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