diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-07-18 16:04:22 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-07-18 23:04:59 +0000 |
commit | e5fa40ab31fd127b4ad005448b6676fe9517a755 (patch) | |
tree | 3b3f84647819cce889f9049d48865e6542380580 /ui | |
parent | 6df8e83e5754a883e768573a0bae8199f1c8fb9c (diff) | |
download | wireshark-e5fa40ab31fd127b4ad005448b6676fe9517a755.tar.gz |
Mark the file as having unsaved data if you change address resolution.
That information can, and will, get saved in some file formats, so mark
the file as changed so it can and will get saved by "Save".
XXX - we need to treat it as a type of data that can be discarded when
saving in some file formats, just like comments.
Bug: 12629
Change-Id: I1fd69b95f4f7345c339961b4c53c28b98b364e4e
Reviewed-on: https://code.wireshark.org/review/16538
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gtk/manual_addr_resolv.c | 3 | ||||
-rw-r--r-- | ui/qt/address_editor_frame.cpp | 29 | ||||
-rw-r--r-- | ui/qt/address_editor_frame.h | 1 |
3 files changed, 19 insertions, 14 deletions
diff --git a/ui/gtk/manual_addr_resolv.c b/ui/gtk/manual_addr_resolv.c index 0fae93da27..085dc0637c 100644 --- a/ui/gtk/manual_addr_resolv.c +++ b/ui/gtk/manual_addr_resolv.c @@ -62,7 +62,7 @@ man_addr_resolv_ok(GtkWidget *w _U_, gpointer data _U_) name = gtk_entry_get_text(GTK_ENTRY(name_te)); if (strlen(addr) && strlen(name)) { - if (!add_ip_name_from_string(addr, name)) { + if (!cf_add_ip_name_from_string(&cfile, addr, name)) { GtkWidget *dialog = (GtkWidget *)simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Illegal IP address: \"%s\".", addr); simple_dialog_set_cb(dialog, man_addr_ill_addr_cb, NULL); @@ -70,6 +70,7 @@ man_addr_resolv_ok(GtkWidget *w _U_, gpointer data _U_) return; } else { redissect = TRUE; + main_update_for_unsaved_changes(&cfile); } } g_free(addr); diff --git a/ui/qt/address_editor_frame.cpp b/ui/qt/address_editor_frame.cpp index cb27144615..49e3fa1217 100644 --- a/ui/qt/address_editor_frame.cpp +++ b/ui/qt/address_editor_frame.cpp @@ -42,7 +42,8 @@ AddressEditorFrame::AddressEditorFrame(QWidget *parent) : AccordionFrame(parent), - ui(new Ui::AddressEditorFrame) + ui(new Ui::AddressEditorFrame), + cap_file_(NULL) { ui->setupUi(this); @@ -60,12 +61,14 @@ AddressEditorFrame::~AddressEditorFrame() void AddressEditorFrame::editAddresses(CaptureFile &cf, int column) { - if (!cf.capFile()->current_frame) { + cap_file_ = cf.capFile(); + + if (!cap_file_->current_frame) { on_buttonBox_rejected(); return; } - if (!cf_read_record(cf.capFile(), cf.capFile()->current_frame)) { + if (!cf_read_record(cap_file_, cap_file_->current_frame)) { on_buttonBox_rejected(); return; // error reading the frame } @@ -75,22 +78,22 @@ void AddressEditorFrame::editAddresses(CaptureFile &cf, int column) ui->addressComboBox->clear(); - epan_dissect_init(&edt, cf.capFile()->epan, FALSE, FALSE); - col_custom_prime_edt(&edt, &cf.capFile()->cinfo); + epan_dissect_init(&edt, cap_file_->epan, FALSE, FALSE); + col_custom_prime_edt(&edt, &cap_file_->cinfo); - epan_dissect_run(&edt, cf.capFile()->cd_t, &cf.capFile()->phdr, - frame_tvbuff_new_buffer(cf.capFile()->current_frame, &cf.capFile()->buf), cf.capFile()->current_frame, &cf.capFile()->cinfo); + epan_dissect_run(&edt, cap_file_->cd_t, &cap_file_->phdr, + frame_tvbuff_new_buffer(cap_file_->current_frame, &cap_file_->buf), cap_file_->current_frame, &cap_file_->cinfo); epan_dissect_fill_in_columns(&edt, TRUE, TRUE); /* First check selected column */ - if (isAddressColumn(&cf.capFile()->cinfo, column)) { - addresses << cf.capFile()->cinfo.col_expr.col_expr_val[column]; + if (isAddressColumn(&cap_file_->cinfo, column)) { + addresses << cap_file_->cinfo.col_expr.col_expr_val[column]; } - for (int col = 0; col < cf.capFile()->cinfo.num_cols; col++) { + for (int col = 0; col < cap_file_->cinfo.num_cols; col++) { /* Then check all columns except the selected */ - if ((col != column) && (isAddressColumn(&cf.capFile()->cinfo, col))) { - addresses << cf.capFile()->cinfo.col_expr.col_expr_val[col]; + if ((col != column) && (isAddressColumn(&cap_file_->cinfo, col))) { + addresses << cap_file_->cinfo.col_expr.col_expr_val[col]; } } @@ -142,7 +145,7 @@ void AddressEditorFrame::on_buttonBox_accepted() } QString addr = ui->addressComboBox->currentText(); QString name = ui->nameLineEdit->text(); - if (!add_ip_name_from_string(addr.toUtf8().constData(), name.toUtf8().constData())) { + if (!cf_add_ip_name_from_string(cap_file_, addr.toUtf8().constData(), name.toUtf8().constData())) { QString error_msg = tr("Can't assign %1 to %2").arg(name).arg(addr); emit editAddressStatus(error_msg); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); diff --git a/ui/qt/address_editor_frame.h b/ui/qt/address_editor_frame.h index 0bec30b4b9..eb57263c79 100644 --- a/ui/qt/address_editor_frame.h +++ b/ui/qt/address_editor_frame.h @@ -59,6 +59,7 @@ private slots: private: Ui::AddressEditorFrame *ui; + capture_file *cap_file_; bool isAddressColumn(struct epan_column_info *cinfo, int column); }; |