From 77f969958c75a8ba138d5adeeddbef50664f52c0 Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Mon, 20 Oct 2014 14:36:52 -0700 Subject: Fix support for writing out edited records. Add a cf_set_frame_edited() routine to set the record header and data for a record; have it do all the non-GUI work, and have it set the file's "unsaved changes" flag. Have the GUI code just call that routine and then update the title bar to reflect the unsaved changes. While we're at it, unmark a no-longer-unused argument to save_record(). Change-Id: Ieb513fdf423b388519527621ecec4cf634b98caf Reviewed-on: https://code.wireshark.org/review/4885 Reviewed-by: Guy Harris --- ui/gtk/packet_win.c | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) (limited to 'ui/gtk/packet_win.c') diff --git a/ui/gtk/packet_win.c b/ui/gtk/packet_win.c index 5be2aa707b..b842e9425a 100644 --- a/ui/gtk/packet_win.c +++ b/ui/gtk/packet_win.c @@ -900,22 +900,6 @@ edit_pkt_destroy_new_window(GObject *object _U_, gpointer user_data) /* XXX, notify main packet list that packet should be redisplayed */ } -static gint g_direct_compare_func(gconstpointer a, gconstpointer b, gpointer user_data _U_) { - if (a > b) - return 1; - else if (a < b) - return -1; - else - return 0; -} - -static void modifed_frame_data_free(gpointer data) { - modified_frame_data *mfd = (modified_frame_data *) data; - - g_free(mfd->pd); - g_free(mfd); -} - #endif /* WANT_PACKET_EDITOR */ void new_packet_window(GtkWidget *w _U_, gboolean reference, gboolean editable _U_) @@ -1044,15 +1028,11 @@ void new_packet_window(GtkWidget *w _U_, gboolean reference, gboolean editable _ #ifdef WANT_PACKET_EDITOR if (editable && DataPtr->frame->cap_len != 0) { /* XXX, there's no Save button here, so lets assume packet is always edited */ - modified_frame_data *mfd = (modified_frame_data *)g_malloc(sizeof(modified_frame_data)); - - mfd->pd = DataPtr->pd; - mfd->phdr = DataPtr->phdr; + cf_set_frame_edited(&cfile, DataPtr->frame, &DataPtr->phdr, + DataPtr->pd); - if (cfile.edited_frames == NULL) - cfile.edited_frames = g_tree_new_full(g_direct_compare_func, NULL, NULL, modifed_frame_data_free); - g_tree_insert(cfile.edited_frames, GINT_TO_POINTER(DataPtr->frame->num), mfd); - DataPtr->frame->file_off = -1; + /* Update the main window, as we now have unsaved changes. */ + main_update_for_unsaved_changes(&cfile); } #endif } -- cgit v1.2.1