aboutsummaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2006-04-08 20:19:40 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2006-04-08 20:19:40 +0000
commit3d22396ca0bdb1d1b53f15dec27bca94f5ef3c52 (patch)
tree8a69673ec385ff2b0555250e4f40c81b23e7c09d /gtk
parentae3b5c37669ce7e04d44ac9c9b496fa2ca151942 (diff)
Fix for bug 848. Make a scrollable window when more than 10 interfaces are listed.
svn path=/trunk/; revision=17844
Diffstat (limited to 'gtk')
-rw-r--r--gtk/capture_if_dlg.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/gtk/capture_if_dlg.c b/gtk/capture_if_dlg.c
index 17aa92732c..33693f539b 100644
--- a/gtk/capture_if_dlg.c
+++ b/gtk/capture_if_dlg.c
@@ -317,7 +317,7 @@ capture_if_destroy_cb(GtkWidget *win _U_, gpointer user_data _U_)
void
capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
{
- GtkWidget *main_vb, *bbox, *close_bt, *help_bt;
+ GtkWidget *main_vb, *main_sw, *bbox, *close_bt, *help_bt;
GtkWidget *if_tb;
GtkWidget *if_lb;
@@ -328,7 +328,8 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
int err;
char err_str[CAPTURE_PCAP_ERRBUF_SIZE];
gchar *cant_get_if_list_errstr;
- int row;
+ GtkRequisition requisition;
+ int row, height;
if_dlg_data_t *if_dlg_data;
int ifs;
GList *curr;
@@ -377,17 +378,22 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
gtk_window_add_accel_group(GTK_WINDOW(cap_if_w), accel_group);
#endif
+ main_sw = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(main_sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ gtk_container_add(GTK_CONTAINER(cap_if_w), main_sw);
+
main_vb = gtk_vbox_new(FALSE, 0);
gtk_container_border_width(GTK_CONTAINER(main_vb), 5);
- gtk_container_add(GTK_CONTAINER(cap_if_w), main_vb);
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(main_sw), main_vb);
if_tb = gtk_table_new(6,1, FALSE);
gtk_table_set_row_spacings(GTK_TABLE(if_tb), 3);
gtk_table_set_col_spacings(GTK_TABLE(if_tb), 3);
- gtk_container_add(GTK_CONTAINER(main_vb), if_tb);
+ gtk_box_pack_start(GTK_BOX(main_vb), if_tb, FALSE, FALSE, 0);
row = 0;
+ height = 0;
#ifndef _WIN32
/*
@@ -422,6 +428,8 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
SIGNAL_CONNECT(stop_bt, "clicked", capture_stop_cb, NULL);
row++;
+ gtk_widget_size_request(stop_bt, &requisition);
+ height += requisition.height + 15;
for(ifs = 0; (curr = g_list_nth(if_list, ifs)); ifs++) {
g_string_assign(if_tool_str, "");
@@ -522,6 +530,11 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
if_data = g_list_append(if_data, if_dlg_data);
row++;
+ if (row <= 10) {
+ /* Lets add up 10 rows of interfaces, otherwise the window may become too high */
+ gtk_widget_size_request(GTK_WIDGET(if_dlg_data->prepare_bt), &requisition);
+ height += requisition.height;
+ }
}
g_string_free(if_tool_str, TRUE);
@@ -543,6 +556,10 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_CAPTURE_INTERFACES_DIALOG);
}
+ gtk_widget_size_request(GTK_WIDGET(close_bt), &requisition);
+ height += requisition.height + 25;
+ gtk_window_set_default_size(GTK_WINDOW(cap_if_w), -1, height);
+
gtk_widget_grab_default(close_bt);
SIGNAL_CONNECT(cap_if_w, "delete_event", window_delete_event_cb, NULL);