aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/help_dlg.c
diff options
context:
space:
mode:
authorLaurent Deniel <laurent.deniel@free.fr>2000-08-16 21:08:48 +0000
committerLaurent Deniel <laurent.deniel@free.fr>2000-08-16 21:08:48 +0000
commitec5366cedec69a3899bcf829be3a47e94708a6b5 (patch)
tree6ca0c04f3d419e0bea77d2e6ffcde98dc849f9d8 /gtk/help_dlg.c
parente4c5d20f3a37826b5f57a7cb105392a10bed9cfa (diff)
downloadwireshark-ec5366cedec69a3899bcf829be3a47e94708a6b5.tar.gz
wireshark-ec5366cedec69a3899bcf829be3a47e94708a6b5.tar.bz2
wireshark-ec5366cedec69a3899bcf829be3a47e94708a6b5.zip
Fix a long standing bug in the scrolled window handling in follow TCP stream
which make ethereal aborts if the preferences were modified (or cancel) after the TCP window was closed. Fix the same bug in the other scrolled window handling (help & protocols). (forget_scrolled_window() was not called at the window closure). svn path=/trunk/; revision=2283
Diffstat (limited to 'gtk/help_dlg.c')
-rw-r--r--gtk/help_dlg.c84
1 files changed, 54 insertions, 30 deletions
diff --git a/gtk/help_dlg.c b/gtk/help_dlg.c
index c85ed2408c..4fe534c60c 100644
--- a/gtk/help_dlg.c
+++ b/gtk/help_dlg.c
@@ -1,6 +1,6 @@
/* help_dlg.c
*
- * $Id: help_dlg.c,v 1.2 2000/08/11 13:33:11 deniel Exp $
+ * $Id: help_dlg.c,v 1.3 2000/08/16 21:08:48 deniel Exp $
*
* Laurent Deniel <deniel@worldnet.fr>
*
@@ -49,6 +49,8 @@
#include "util.h"
#include "ui_util.h"
+#define MAX_SCROLLED_WINDOWS 5
+
typedef enum {
OVERVIEW_HELP,
PROTOCOL_HELP,
@@ -61,11 +63,13 @@ static void set_text(GtkWidget *w, char *buffer, int nchars);
static void set_help_text(GtkWidget *w, help_type_t type);
static GtkWidget *help_w = NULL;
+static GtkWidget *txt_scrollw[MAX_SCROLLED_WINDOWS];
void help_cb(GtkWidget *w, gpointer data)
{
- GtkWidget *main_vb, *bbox, *help_nb, *close_bt, *label, *txt_scrollw,
+ int nb_scroll = 0;
+ GtkWidget *main_vb, *bbox, *help_nb, *close_bt, *label,
*overview_vb, *overview_text,
*proto_vb, *proto_text,
*dfilter_vb, *dfilter_text,
@@ -76,6 +80,12 @@ void help_cb(GtkWidget *w, gpointer data)
return;
}
+ for(nb_scroll = 0; nb_scroll < MAX_SCROLLED_WINDOWS; nb_scroll++) {
+ txt_scrollw[nb_scroll] = NULL;
+ }
+
+ nb_scroll = 0;
+
help_w = gtk_window_new(GTK_WINDOW_DIALOG);
gtk_widget_set_name(help_w, "Ethereal Help window" );
gtk_window_set_title(GTK_WINDOW(help_w), "Ethereal: Help");
@@ -102,20 +112,22 @@ void help_cb(GtkWidget *w, gpointer data)
overview_vb = gtk_vbox_new(FALSE, 0);
gtk_container_border_width(GTK_CONTAINER(overview_vb), 1);
- txt_scrollw = gtk_scrolled_window_new(NULL, NULL);
- gtk_box_pack_start(GTK_BOX(overview_vb), txt_scrollw, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw),
+ txt_scrollw[nb_scroll] = gtk_scrolled_window_new(NULL, NULL);
+ gtk_box_pack_start(GTK_BOX(overview_vb), txt_scrollw[nb_scroll],
+ TRUE, TRUE, 0);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw[nb_scroll]),
GTK_POLICY_NEVER,
GTK_POLICY_ALWAYS);
- set_scrollbar_placement_scrollw(txt_scrollw, prefs.gui_scrollbar_on_right);
- remember_scrolled_window(txt_scrollw);
+ set_scrollbar_placement_scrollw(txt_scrollw[nb_scroll],
+ prefs.gui_scrollbar_on_right);
+ remember_scrolled_window(txt_scrollw[nb_scroll]);
overview_text = gtk_text_new(NULL, NULL );
gtk_text_set_editable(GTK_TEXT(overview_text), FALSE);
gtk_text_set_word_wrap(GTK_TEXT(overview_text), TRUE);
gtk_text_set_line_wrap(GTK_TEXT(overview_text), TRUE);
set_help_text(overview_text, OVERVIEW_HELP);
- gtk_container_add(GTK_CONTAINER(txt_scrollw), overview_text);
- gtk_widget_show(txt_scrollw);
+ gtk_container_add(GTK_CONTAINER(txt_scrollw[nb_scroll]), overview_text);
+ gtk_widget_show(txt_scrollw[nb_scroll]);
gtk_widget_show(overview_text);
gtk_widget_show(overview_vb);
label = gtk_label_new("Overview");
@@ -128,20 +140,21 @@ void help_cb(GtkWidget *w, gpointer data)
proto_vb = gtk_vbox_new(FALSE, 0);
gtk_container_border_width(GTK_CONTAINER(proto_vb), 1);
- txt_scrollw = gtk_scrolled_window_new(NULL, NULL);
- gtk_box_pack_start(GTK_BOX(proto_vb), txt_scrollw, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw),
+ txt_scrollw[++nb_scroll] = gtk_scrolled_window_new(NULL, NULL);
+ gtk_box_pack_start(GTK_BOX(proto_vb), txt_scrollw[nb_scroll], TRUE, TRUE, 0);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw[nb_scroll]),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS);
- set_scrollbar_placement_scrollw(txt_scrollw, prefs.gui_scrollbar_on_right);
- remember_scrolled_window(txt_scrollw);
+ set_scrollbar_placement_scrollw(txt_scrollw[nb_scroll],
+ prefs.gui_scrollbar_on_right);
+ remember_scrolled_window(txt_scrollw[nb_scroll]);
proto_text = gtk_text_new(NULL, NULL);
gtk_text_set_editable(GTK_TEXT(proto_text), FALSE);
gtk_text_set_line_wrap(GTK_TEXT(proto_text), FALSE);
set_help_text(proto_text, PROTOCOL_HELP);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(txt_scrollw),
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(txt_scrollw[nb_scroll]),
proto_text);
- gtk_widget_show(txt_scrollw);
+ gtk_widget_show(txt_scrollw[nb_scroll]);
gtk_widget_show(proto_text);
gtk_widget_show(proto_vb);
label = gtk_label_new("Protocols");
@@ -151,20 +164,22 @@ void help_cb(GtkWidget *w, gpointer data)
dfilter_vb = gtk_vbox_new(FALSE, 0);
gtk_container_border_width(GTK_CONTAINER(dfilter_vb), 1);
- txt_scrollw = gtk_scrolled_window_new(NULL, NULL);
- gtk_box_pack_start(GTK_BOX(dfilter_vb), txt_scrollw, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw),
+ txt_scrollw[++nb_scroll] = gtk_scrolled_window_new(NULL, NULL);
+ gtk_box_pack_start(GTK_BOX(dfilter_vb), txt_scrollw[nb_scroll],
+ TRUE, TRUE, 0);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw[nb_scroll]),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS);
- set_scrollbar_placement_scrollw(txt_scrollw, prefs.gui_scrollbar_on_right);
- remember_scrolled_window(txt_scrollw);
+ set_scrollbar_placement_scrollw(txt_scrollw[nb_scroll],
+ prefs.gui_scrollbar_on_right);
+ remember_scrolled_window(txt_scrollw[nb_scroll]);
dfilter_text = gtk_text_new(NULL, NULL);
gtk_text_set_editable(GTK_TEXT(dfilter_text), FALSE);
gtk_text_set_line_wrap(GTK_TEXT(dfilter_text), FALSE);
set_help_text(dfilter_text, DFILTER_HELP);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(txt_scrollw),
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(txt_scrollw[nb_scroll]),
dfilter_text);
- gtk_widget_show(txt_scrollw);
+ gtk_widget_show(txt_scrollw[nb_scroll]);
gtk_widget_show(dfilter_text);
gtk_widget_show(dfilter_vb);
label = gtk_label_new("Display Filters");
@@ -174,20 +189,22 @@ void help_cb(GtkWidget *w, gpointer data)
cfilter_vb = gtk_vbox_new(FALSE, 0);
gtk_container_border_width(GTK_CONTAINER(cfilter_vb), 1);
- txt_scrollw = gtk_scrolled_window_new(NULL, NULL);
- gtk_box_pack_start(GTK_BOX(cfilter_vb), txt_scrollw, TRUE, TRUE, 0);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw),
+ txt_scrollw[++nb_scroll] = gtk_scrolled_window_new(NULL, NULL);
+ gtk_box_pack_start(GTK_BOX(cfilter_vb), txt_scrollw[nb_scroll],
+ TRUE, TRUE, 0);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(txt_scrollw[nb_scroll]),
GTK_POLICY_NEVER,
GTK_POLICY_ALWAYS);
- set_scrollbar_placement_scrollw(txt_scrollw, prefs.gui_scrollbar_on_right);
- remember_scrolled_window(txt_scrollw);
+ set_scrollbar_placement_scrollw(txt_scrollw[nb_scroll],
+ prefs.gui_scrollbar_on_right);
+ remember_scrolled_window(txt_scrollw[nb_scroll]);
cfilter_text = gtk_text_new(NULL, NULL );
gtk_text_set_editable(GTK_TEXT(cfilter_text), FALSE);
gtk_text_set_word_wrap(GTK_TEXT(cfilter_text), TRUE);
gtk_text_set_line_wrap(GTK_TEXT(cfilter_text), TRUE);
set_help_text(cfilter_text, CFILTER_HELP);
- gtk_container_add(GTK_CONTAINER(txt_scrollw), cfilter_text);
- gtk_widget_show(txt_scrollw);
+ gtk_container_add(GTK_CONTAINER(txt_scrollw[nb_scroll]), cfilter_text);
+ gtk_widget_show(txt_scrollw[nb_scroll]);
gtk_widget_show(cfilter_text);
gtk_widget_show(cfilter_vb);
label = gtk_label_new("Capture Filters");
@@ -217,6 +234,13 @@ void help_cb(GtkWidget *w, gpointer data)
static void help_close_cb(GtkWidget *w, gpointer data)
{
+ int nb_scroll;
+ for(nb_scroll = 0; nb_scroll < MAX_SCROLLED_WINDOWS; nb_scroll++) {
+ if (txt_scrollw[nb_scroll]) {
+ forget_scrolled_window(txt_scrollw[nb_scroll]);
+ txt_scrollw[nb_scroll] = NULL;
+ }
+ }
if (help_w)
gtk_widget_destroy(help_w);
help_w = NULL;