mirror of https://github.com/odrling/Aegisub
Fix crash when opening the Select Lines dialog for the second time
Originally committed to SVN as r6652.
This commit is contained in:
parent
462448c7d1
commit
2a324a56e5
|
@ -189,12 +189,22 @@ wxDialog (c->parent, -1, _("Select"), wxDefaultPosition, wxDefaultSize, wxCAPTIO
|
||||||
match_mode->SetSelection(OPT_GET("Tool/Select Lines/Mode")->GetInt());
|
match_mode->SetSelection(OPT_GET("Tool/Select Lines/Mode")->GetInt());
|
||||||
|
|
||||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &DialogSelection::Process, this, wxID_OK);
|
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &DialogSelection::Process, this, wxID_OK);
|
||||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &DialogSelection::OnClose, this, wxID_CANCEL);
|
|
||||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, std::tr1::bind(&HelpButton::OpenPage, "Select Lines"), wxID_HELP);
|
Bind(wxEVT_COMMAND_BUTTON_CLICKED, std::tr1::bind(&HelpButton::OpenPage, "Select Lines"), wxID_HELP);
|
||||||
apply_to_comments->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, std::tr1::bind(&DialogSelection::OnDialogueCheckbox, this, apply_to_dialogue));
|
apply_to_comments->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, std::tr1::bind(&DialogSelection::OnDialogueCheckbox, this, apply_to_dialogue));
|
||||||
apply_to_dialogue->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, std::tr1::bind(&DialogSelection::OnDialogueCheckbox, this, apply_to_comments));
|
apply_to_dialogue->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, std::tr1::bind(&DialogSelection::OnDialogueCheckbox, this, apply_to_comments));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DialogSelection::~DialogSelection() {
|
||||||
|
OPT_SET("Tool/Select Lines/Text")->SetString(STD_STR(match_text->GetValue()));
|
||||||
|
OPT_SET("Tool/Select Lines/Condition")->SetInt(select_unmatching_lines->GetValue());
|
||||||
|
OPT_SET("Tool/Select Lines/Field")->SetInt(dialogue_field->GetSelection());
|
||||||
|
OPT_SET("Tool/Select Lines/Action")->SetInt(selection_change_type->GetSelection());
|
||||||
|
OPT_SET("Tool/Select Lines/Mode")->SetInt(match_mode->GetSelection());
|
||||||
|
OPT_SET("Tool/Select Lines/Match/Case")->SetBool(case_sensitive->IsChecked());
|
||||||
|
OPT_SET("Tool/Select Lines/Match/Dialogue")->SetBool(apply_to_dialogue->IsChecked());
|
||||||
|
OPT_SET("Tool/Select Lines/Match/Comment")->SetBool(apply_to_comments->IsChecked());
|
||||||
|
}
|
||||||
|
|
||||||
void DialogSelection::Process(wxCommandEvent&) {
|
void DialogSelection::Process(wxCommandEvent&) {
|
||||||
std::set<AssDialogue*> matches;
|
std::set<AssDialogue*> matches;
|
||||||
|
|
||||||
|
@ -268,19 +278,6 @@ void DialogSelection::Process(wxCommandEvent&) {
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogSelection::OnClose(wxCommandEvent&) {
|
|
||||||
OPT_SET("Tool/Select Lines/Text")->SetString(STD_STR(match_text->GetValue()));
|
|
||||||
OPT_SET("Tool/Select Lines/Condition")->SetInt(select_unmatching_lines->GetValue());
|
|
||||||
OPT_SET("Tool/Select Lines/Field")->SetInt(dialogue_field->GetSelection());
|
|
||||||
OPT_SET("Tool/Select Lines/Action")->SetInt(selection_change_type->GetSelection());
|
|
||||||
OPT_SET("Tool/Select Lines/Mode")->SetInt(match_mode->GetSelection());
|
|
||||||
OPT_SET("Tool/Select Lines/Match/Case")->SetBool(case_sensitive->IsChecked());
|
|
||||||
OPT_SET("Tool/Select Lines/Match/Dialogue")->SetBool(apply_to_dialogue->IsChecked());
|
|
||||||
OPT_SET("Tool/Select Lines/Match/Comment")->SetBool(apply_to_comments->IsChecked());
|
|
||||||
|
|
||||||
Destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DialogSelection::OnDialogueCheckbox(wxCheckBox *chk) {
|
void DialogSelection::OnDialogueCheckbox(wxCheckBox *chk) {
|
||||||
if(!apply_to_dialogue->IsChecked() && !apply_to_comments->GetValue())
|
if(!apply_to_dialogue->IsChecked() && !apply_to_comments->GetValue())
|
||||||
chk->SetValue(true);
|
chk->SetValue(true);
|
||||||
|
|
|
@ -51,13 +51,11 @@ class DialogSelection : public wxDialog {
|
||||||
|
|
||||||
void Process(wxCommandEvent&);
|
void Process(wxCommandEvent&);
|
||||||
|
|
||||||
/// Close event handler to save settings and destroy
|
|
||||||
void OnClose(wxCommandEvent&);
|
|
||||||
|
|
||||||
/// Dialogue/Comment check handler to ensure at least one is always checked
|
/// Dialogue/Comment check handler to ensure at least one is always checked
|
||||||
/// @param chk The checkbox to check if both are clear
|
/// @param chk The checkbox to check if both are clear
|
||||||
void OnDialogueCheckbox(wxCheckBox *chk);
|
void OnDialogueCheckbox(wxCheckBox *chk);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DialogSelection(agi::Context *c);
|
DialogSelection(agi::Context *c);
|
||||||
|
~DialogSelection();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue