summaryrefslogtreecommitdiffstats
path: root/src/widgets/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index ed5264159f..84fdef6702 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -482,9 +482,20 @@ bool QFileDialog::restoreState(const QByteArray &state)
history.pop_front();
setHistory(history);
setDirectory(lastVisitedDir()->isEmpty() ? currentDirectory : *lastVisitedDir());
- if (!d->qFileDialogUi->treeView->header()->restoreState(headerData))
+ QHeaderView *headerView = d->qFileDialogUi->treeView->header();
+ if (!headerView->restoreState(headerData))
return false;
+ QList<QAction*> actions = headerView->actions();
+ QAbstractItemModel *abstractModel = d->model;
+#ifndef QT_NO_PROXYMODEL
+ if (d->proxyModel)
+ abstractModel = d->proxyModel;
+#endif
+ int total = qMin(abstractModel->columnCount(QModelIndex()), actions.count() + 1);
+ for (int i = 1; i < total; ++i)
+ actions.at(i - 1)->setChecked(!headerView->isSectionHidden(i));
+
setViewMode(ViewMode(viewMode));
return true;
}