Fix setting widget visibility when changing the layout.

Fixes a bug exposed by g5265bc3.

Change-Id: Ia0775aa068f5e9e1eeb66384bac97fe57f3c957c
Reviewed-on: https://code.wireshark.org/review/9231
Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
Gerald Combs 2015-06-29 22:20:53 -05:00
parent 63a78d45bc
commit 2325550c0d
1 changed files with 7 additions and 18 deletions

View File

@ -345,24 +345,13 @@ void MainWindow::layoutPanes()
parents[1]->addWidget(getLayoutWidget(prefs.gui_layout_content_2));
parents[2]->addWidget(getLayoutWidget(prefs.gui_layout_content_3));
QList<QWidget *>split_widgets;
for (int i = 0; i < master_split_.count(); i++) {
split_widgets << master_split_.widget(i);
}
for (int i = 0; i < extra_split_.count(); i++) {
split_widgets << master_split_.widget(i);
}
foreach (QWidget *widget, split_widgets) {
bool show = true;
if (widget == packet_list_ && !recent.packet_list_show) {
show = false;
} else if (widget == proto_tree_ && !recent.tree_view_show) {
show = false;
} else if (widget == byte_view_tab_ && !recent.byte_view_show) {
show = false;
}
widget->setVisible(show);
}
const QList<QWidget *> ms_children = master_split_.findChildren<QWidget *>();
extra_split_.setVisible(ms_children.contains(&extra_split_));
packet_list_->setVisible(ms_children.contains(packet_list_) && recent.packet_list_show);
proto_tree_->setVisible(ms_children.contains(proto_tree_) && recent.tree_view_show);
byte_view_tab_->setVisible(ms_children.contains(byte_view_tab_) && recent.byte_view_show);
packet_list_->thaw();
cf_select_packet(capture_file_.capFile(), current_row); // XXX Doesn't work for row 0?
cur_layout_ = new_layout;