diff options
author | Guy Harris <guy@alum.mit.edu> | 2004-08-31 02:49:28 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2004-08-31 02:49:28 +0000 |
commit | 92a52408e8d65d75f30881d9bd0e80a324826871 (patch) | |
tree | c1186cc8b0a8053fb3c9370062566f0c3e41eaff /gtk/main.c | |
parent | 344dddb12472768b88d16d853d315e090d240108 (diff) | |
download | wireshark-92a52408e8d65d75f30881d9bd0e80a324826871.tar.gz wireshark-92a52408e8d65d75f30881d9bd0e80a324826871.tar.bz2 wireshark-92a52408e8d65d75f30881d9bd0e80a324826871.zip |
Don't have a dummy widget to use for panes marked as "None" - that means
the widget in question gets more than one parent if more than one pane
is marked as "None", and GTK_ doesn't like that. Instead, just have
"main_widget_layout()" return a null pointer for "None" panes, and don't
put the pane into the pane splitter if that pane is null.
Clean up the handling of layouts.
svn path=/trunk/; revision=11855
Diffstat (limited to 'gtk/main.c')
-rw-r--r-- | gtk/main.c | 68 |
1 files changed, 33 insertions, 35 deletions
diff --git a/gtk/main.c b/gtk/main.c index a134653a5c..dc1b8a65de 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -149,7 +149,7 @@ capture_file cfile; GtkWidget *main_display_filter_widget=NULL; GtkWidget *top_level = NULL, *tree_view, *byte_nb_ptr, *tv_scrollw; -static GtkWidget *none_lb, *main_pane_v1, *main_pane_v2, *main_pane_h1, *main_pane_h2; +static GtkWidget *main_pane_v1, *main_pane_v2, *main_pane_h1, *main_pane_h2; static GtkWidget *main_first_pane, *main_second_pane; static GtkWidget *status_pane; static GtkWidget *menubar, *main_vbox, *main_tb, *pkt_scrollw, *stat_hbox, *filter_tb; @@ -2689,7 +2689,7 @@ GtkWidget *main_widget_layout(gint layout_content) { switch(layout_content) { case(layout_pane_content_none): - return none_lb; + return NULL; break; case(layout_pane_content_plist): return pkt_scrollw; @@ -2711,7 +2711,9 @@ GtkWidget *main_widget_layout(gint layout_content) * Rearrange the main window widgets */ void main_widgets_rearrange(void) { - GtkWidget *pane_content[3]; + GtkWidget *first_pane_widget1, *first_pane_widget2; + GtkWidget *second_pane_widget1, *second_pane_widget2; + gboolean split_top_left; /* be a bit faster */ gtk_widget_hide(main_vbox); @@ -2727,7 +2729,6 @@ void main_widgets_rearrange(void) { gtk_widget_ref(info_bar); gtk_widget_ref(packets_bar); gtk_widget_ref(status_pane); - gtk_widget_ref(none_lb); gtk_widget_ref(main_pane_v1); gtk_widget_ref(main_pane_v2); gtk_widget_ref(main_pane_h1); @@ -2753,64 +2754,63 @@ void main_widgets_rearrange(void) { gtk_box_pack_start(GTK_BOX(main_vbox), filter_tb, FALSE, TRUE, 1); } - /* get the corresponding widgets to the content setting */ - pane_content[0] = main_widget_layout(prefs.gui_layout_content_1); - pane_content[1] = main_widget_layout(prefs.gui_layout_content_2); - pane_content[2] = main_widget_layout(prefs.gui_layout_content_3); - /* fill the main layout panes */ switch(prefs.gui_layout_type) { case(layout_type_5): main_first_pane = main_pane_v1; main_second_pane = main_pane_v2; - gtk_paned_add1(GTK_PANED(main_first_pane), pane_content[0]); - gtk_paned_add2(GTK_PANED(main_first_pane), main_second_pane); - gtk_paned_pack1(GTK_PANED(main_second_pane), pane_content[1], TRUE, TRUE); - gtk_paned_pack2(GTK_PANED(main_second_pane), pane_content[2], FALSE, FALSE); + split_top_left = FALSE; break; case(layout_type_2): main_first_pane = main_pane_v1; main_second_pane = main_pane_h1; - gtk_paned_add1(GTK_PANED(main_first_pane), pane_content[0]); - gtk_paned_add2(GTK_PANED(main_first_pane), main_second_pane); - gtk_paned_pack1(GTK_PANED(main_second_pane), pane_content[1], TRUE, TRUE); - gtk_paned_pack2(GTK_PANED(main_second_pane), pane_content[2], FALSE, FALSE); + split_top_left = FALSE; break; case(layout_type_1): main_first_pane = main_pane_v1; main_second_pane = main_pane_h1; - gtk_paned_add1(GTK_PANED(main_first_pane), main_second_pane); - gtk_paned_add2(GTK_PANED(main_first_pane), pane_content[2]); - gtk_paned_pack1(GTK_PANED(main_second_pane), pane_content[0], TRUE, TRUE); - gtk_paned_pack2(GTK_PANED(main_second_pane), pane_content[1], FALSE, FALSE); + split_top_left = TRUE; break; case(layout_type_4): main_first_pane = main_pane_h1; main_second_pane = main_pane_v1; - gtk_paned_add1(GTK_PANED(main_first_pane), pane_content[0]); - gtk_paned_add2(GTK_PANED(main_first_pane), main_second_pane); - gtk_paned_pack1(GTK_PANED(main_second_pane), pane_content[1], TRUE, TRUE); - gtk_paned_pack2(GTK_PANED(main_second_pane), pane_content[2], FALSE, FALSE); + split_top_left = FALSE; break; case(layout_type_3): main_first_pane = main_pane_h1; main_second_pane = main_pane_v1; - gtk_paned_add1(GTK_PANED(main_first_pane), main_second_pane); - gtk_paned_add2(GTK_PANED(main_first_pane), pane_content[2]); - gtk_paned_pack1(GTK_PANED(main_second_pane), pane_content[0], TRUE, TRUE); - gtk_paned_pack2(GTK_PANED(main_second_pane), pane_content[1], FALSE, FALSE); + split_top_left = TRUE; break; case(layout_type_6): main_first_pane = main_pane_h1; main_second_pane = main_pane_h2; - gtk_paned_add1(GTK_PANED(main_first_pane), pane_content[0]); - gtk_paned_add2(GTK_PANED(main_first_pane), main_second_pane); - gtk_paned_pack1(GTK_PANED(main_second_pane), pane_content[1], TRUE, TRUE); - gtk_paned_pack2(GTK_PANED(main_second_pane), pane_content[2], FALSE, FALSE); + split_top_left = FALSE; break; default: + main_first_pane = NULL; + main_second_pane = NULL; + split_top_left = FALSE; g_assert_not_reached(); } + if (split_top_left) { + first_pane_widget1 = main_second_pane; + second_pane_widget1 = main_widget_layout(prefs.gui_layout_content_1); + second_pane_widget2 = main_widget_layout(prefs.gui_layout_content_2); + first_pane_widget2 = main_widget_layout(prefs.gui_layout_content_3); + } else { + first_pane_widget1 = main_widget_layout(prefs.gui_layout_content_1); + first_pane_widget2 = main_second_pane; + second_pane_widget1 = main_widget_layout(prefs.gui_layout_content_2); + second_pane_widget2 = main_widget_layout(prefs.gui_layout_content_3); + } + if (first_pane_widget1 != NULL) + gtk_paned_add1(GTK_PANED(main_first_pane), first_pane_widget1); + if (first_pane_widget2 != NULL) + gtk_paned_add2(GTK_PANED(main_first_pane), first_pane_widget2); + if (second_pane_widget1 != NULL) + gtk_paned_pack1(GTK_PANED(main_second_pane), second_pane_widget1, TRUE, TRUE); + if (second_pane_widget2 != NULL) + gtk_paned_pack2(GTK_PANED(main_second_pane), second_pane_widget2, FALSE, FALSE); gtk_container_add(GTK_CONTAINER(main_vbox), main_first_pane); @@ -3033,8 +3033,6 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs) /* Panes for the packet list, tree, and byte view */ - none_lb = gtk_label_new("None"); - main_pane_v1 = gtk_vpaned_new(); gtk_widget_show(main_pane_v1); main_pane_v2 = gtk_vpaned_new(); |