forked from osmocom/wireshark
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
This commit is contained in:
parent
344dddb124
commit
92a52408e8
68
gtk/main.c
68
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();
|
||||
|
|
Loading…
Reference in New Issue