mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-05 15:09:08 +02:00
fixes accessibility issue, tab navigation issue, window focus issue
This commit is contained in:
parent
98802ab9ef
commit
f91c866602
@ -246,7 +246,7 @@ namespace
|
|||||||
{
|
{
|
||||||
static constexpr int MaxUserCommentLength = 2000;
|
static constexpr int MaxUserCommentLength = 2000;
|
||||||
|
|
||||||
auto frame = new wxFrame(
|
auto dialog = new wxDialog(
|
||||||
nullptr,
|
nullptr,
|
||||||
wxID_ANY,
|
wxID_ANY,
|
||||||
_("Problem Report for Audacity"),
|
_("Problem Report for Audacity"),
|
||||||
@ -254,83 +254,87 @@ namespace
|
|||||||
wxDefaultSize,
|
wxDefaultSize,
|
||||||
wxDEFAULT_FRAME_STYLE & ~(wxRESIZE_BORDER | wxMAXIMIZE_BOX)//disable frame resize
|
wxDEFAULT_FRAME_STYLE & ~(wxRESIZE_BORDER | wxMAXIMIZE_BOX)//disable frame resize
|
||||||
);
|
);
|
||||||
frame->SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_FRAMEBK));
|
|
||||||
|
|
||||||
auto mainLayout = new wxBoxSizer(wxVERTICAL);
|
auto mainLayout = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
auto headerText = new wxStaticText(frame, wxID_ANY, header);
|
auto headerText = new wxStaticText(dialog, wxID_ANY, header);
|
||||||
headerText->SetFont(wxFont(wxFontInfo().Bold()));
|
headerText->SetFont(wxFont(wxFontInfo().Bold()));
|
||||||
|
|
||||||
auto headerLayout = new wxBoxSizer(wxHORIZONTAL);
|
auto headerLayout = new wxBoxSizer(wxHORIZONTAL);
|
||||||
headerLayout->Add(new wxStaticBitmap(frame, wxID_ANY, wxIcon(warning)));
|
headerLayout->Add(new wxStaticBitmap(dialog, wxID_ANY, wxIcon(warning)));
|
||||||
headerLayout->AddSpacer(5);
|
headerLayout->AddSpacer(5);
|
||||||
headerLayout->Add(headerText, wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL));
|
headerLayout->Add(headerText, wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL));
|
||||||
|
|
||||||
|
mainLayout->Add(headerLayout, wxSizerFlags().Border(wxALL));
|
||||||
|
if (onSend != nullptr)
|
||||||
|
{
|
||||||
|
mainLayout->AddSpacer(5);
|
||||||
|
mainLayout->Add(new wxStaticText(dialog, wxID_ANY, _("Click \"Send\" to submit the report to Audacity. This information is collected anonymously.")), wxSizerFlags().Border(wxALL));
|
||||||
|
}
|
||||||
|
mainLayout->AddSpacer(10);
|
||||||
|
mainLayout->Add(new wxStaticText(dialog, wxID_ANY, _("Problem details")), wxSizerFlags().Border(wxALL));
|
||||||
|
|
||||||
|
auto dumpTextCtrl = new wxTextCtrl(dialog, wxID_ANY, dump, wxDefaultPosition, wxSize(500, 300), wxTE_RICH | wxTE_READONLY | wxTE_MULTILINE | wxTE_DONTWRAP);
|
||||||
|
dumpTextCtrl->SetFont(wxFont(wxFontInfo().Family(wxFONTFAMILY_TELETYPE)));
|
||||||
|
dumpTextCtrl->ShowPosition(0);//scroll to top
|
||||||
|
mainLayout->Add(dumpTextCtrl, wxSizerFlags().Border(wxALL).Expand());
|
||||||
|
|
||||||
auto buttonsLayout = new wxBoxSizer(wxHORIZONTAL);
|
auto buttonsLayout = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
wxTextCtrl* commentCtrl = nullptr;
|
wxTextCtrl* commentCtrl = nullptr;
|
||||||
if (onSend != nullptr)
|
if (onSend != nullptr)
|
||||||
{
|
{
|
||||||
commentCtrl = new wxTextCtrl(frame, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(500, 100), wxTE_MULTILINE);
|
commentCtrl = new wxTextCtrl(dialog, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(500, 100), wxTE_MULTILINE);
|
||||||
commentCtrl->SetMaxLength(MaxUserCommentLength);
|
commentCtrl->SetMaxLength(MaxUserCommentLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (onSend != nullptr)
|
if (onSend != nullptr && commentCtrl != nullptr)
|
||||||
{
|
{
|
||||||
auto okButton = new wxButton(frame, wxID_ANY, XC("&Don't send", "crash reporter button"));
|
auto dontSendButton = new wxButton(dialog, wxID_ANY, XC("&Don't send", "crash reporter button"));
|
||||||
auto sendButton = new wxButton(frame, wxID_ANY, XC("&Send", "crash reporter button"));
|
auto sendButton = new wxButton(dialog, wxID_ANY, XC("&Send", "crash reporter button"));
|
||||||
|
|
||||||
okButton->Bind(wxEVT_BUTTON, [frame](wxCommandEvent&)
|
dontSendButton->Bind(wxEVT_BUTTON, [dialog](wxCommandEvent&)
|
||||||
{
|
{
|
||||||
frame->Close(true);
|
dialog->Close(true);
|
||||||
});
|
});
|
||||||
sendButton->Bind(wxEVT_BUTTON, [frame, commentCtrl, onSend](wxCommandEvent&)
|
sendButton->Bind(wxEVT_BUTTON, [dialog, commentCtrl, onSend](wxCommandEvent&)
|
||||||
{
|
{
|
||||||
if (onSend(commentCtrl->GetValue()))
|
if (onSend(commentCtrl->GetValue()))
|
||||||
{
|
{
|
||||||
frame->Close(true);
|
dialog->Close(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
buttonsLayout->Add(okButton);
|
buttonsLayout->Add(dontSendButton);
|
||||||
buttonsLayout->AddSpacer(5);
|
buttonsLayout->AddSpacer(5);
|
||||||
buttonsLayout->Add(sendButton);
|
buttonsLayout->Add(sendButton);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
auto okButton = new wxButton(frame, wxID_OK, wxT("OK"));
|
auto okButton = new wxButton(dialog, wxID_OK, wxT("OK"));
|
||||||
okButton->Bind(wxEVT_BUTTON, [frame](wxCommandEvent&)
|
okButton->Bind(wxEVT_BUTTON, [dialog](wxCommandEvent&)
|
||||||
{
|
{
|
||||||
frame->Close(true);
|
dialog->Close(true);
|
||||||
});
|
});
|
||||||
buttonsLayout->Add(okButton);
|
buttonsLayout->Add(okButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
mainLayout->Add(headerLayout, wxSizerFlags().Border(wxALL));
|
if (commentCtrl != nullptr)
|
||||||
if (onSend != nullptr)
|
|
||||||
{
|
|
||||||
mainLayout->AddSpacer(5);
|
|
||||||
mainLayout->Add(new wxStaticText(frame, wxID_ANY, _("Click \"Send\" to submit the report to Audacity. This information is collected anonymously.")), wxSizerFlags().Border(wxALL));
|
|
||||||
}
|
|
||||||
mainLayout->AddSpacer(10);
|
|
||||||
mainLayout->Add(new wxStaticText(frame, wxID_ANY, _("Problem details")), wxSizerFlags().Border(wxALL));
|
|
||||||
|
|
||||||
auto dumpTextCtrl = new wxTextCtrl(frame, wxID_ANY, dump, wxDefaultPosition, wxSize(500, 300), wxTE_RICH | wxTE_READONLY | wxTE_MULTILINE | wxTE_DONTWRAP);
|
|
||||||
dumpTextCtrl->SetFont(wxFont(wxFontInfo().Family(wxFONTFAMILY_TELETYPE)));
|
|
||||||
dumpTextCtrl->ShowPosition(0);//scroll to top
|
|
||||||
mainLayout->Add(dumpTextCtrl, wxSizerFlags().Border(wxALL).Expand());
|
|
||||||
|
|
||||||
if (onSend != nullptr)
|
|
||||||
{
|
{
|
||||||
mainLayout->AddSpacer(10);
|
mainLayout->AddSpacer(10);
|
||||||
mainLayout->Add(new wxStaticText(frame, wxID_ANY, _("Comments")), wxSizerFlags().Border(wxALL));
|
mainLayout->Add(new wxStaticText(dialog, wxID_ANY, _("Comments")), wxSizerFlags().Border(wxALL));
|
||||||
mainLayout->Add(commentCtrl, wxSizerFlags().Border(wxALL).Expand());
|
mainLayout->Add(commentCtrl, wxSizerFlags().Border(wxALL).Expand());
|
||||||
}
|
}
|
||||||
|
|
||||||
mainLayout->Add(buttonsLayout, wxSizerFlags().Border(wxALL).Align(wxALIGN_RIGHT));
|
mainLayout->Add(buttonsLayout, wxSizerFlags().Border(wxALL).Align(wxALIGN_RIGHT));
|
||||||
frame->SetSizerAndFit(mainLayout);
|
dialog->SetSizerAndFit(mainLayout);
|
||||||
|
|
||||||
frame->Show(true);
|
dialog->Bind(wxEVT_CLOSE_WINDOW, [dialog](wxCloseEvent&) {
|
||||||
|
dialog->Destroy();
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog->Show(true);
|
||||||
|
dialog->SetFocus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,7 +390,6 @@ void CrashReportApp::OnInitCmdLine(wxCmdLineParser& parser)
|
|||||||
{
|
{
|
||||||
static const wxCmdLineEntryDesc cmdLineEntryDesc[] =
|
static const wxCmdLineEntryDesc cmdLineEntryDesc[] =
|
||||||
{
|
{
|
||||||
{ wxCMD_LINE_SWITCH, "h", "help", "Display help on the command line parameters", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
|
|
||||||
{ wxCMD_LINE_SWITCH, "s", "silent", "Send without displaying the confirmation dialog" },
|
{ wxCMD_LINE_SWITCH, "s", "silent", "Send without displaying the confirmation dialog" },
|
||||||
{ wxCMD_LINE_OPTION, "u", "url", "Crash report server URL", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
|
{ wxCMD_LINE_OPTION, "u", "url", "Crash report server URL", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
|
||||||
{ wxCMD_LINE_OPTION, "a", "args", "A set of arguments to send", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
|
{ wxCMD_LINE_OPTION, "a", "args", "A set of arguments to send", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user