aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/main.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2004-08-31 02:49:28 +0000
committerGuy Harris <guy@alum.mit.edu>2004-08-31 02:49:28 +0000
commit92a52408e8d65d75f30881d9bd0e80a324826871 (patch)
treec1186cc8b0a8053fb3c9370062566f0c3e41eaff /gtk/main.c
parent344dddb12472768b88d16d853d315e090d240108 (diff)
downloadwireshark-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.c68
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();