Ensure the header's context menu is in sync with the visible sections

When the filedialog was reshown the context menu for the header was not
in sync with the sections that were actually visible.  This ensures that
it is in sync after the state of the header is restored.

Task-number: QTBUG-23271

Change-Id: Ia1546bf300d43a5822482f63de99eb52b674bf52
Reviewed-by: Zeno Albisser <zeno.albisser@nokia.com>
(cherry picked from commit 2e220e4603d6a0c21efee3a884be76e9f2d7ebb7)
This commit is contained in:
Andy Shaw 2012-02-04 00:45:33 +01:00 committed by Qt by Nokia
parent 3ea33062d4
commit 9aa51821e4

View File

@ -482,9 +482,20 @@ bool QFileDialog::restoreState(const QByteArray &state)
history.pop_front(); history.pop_front();
setHistory(history); setHistory(history);
setDirectory(lastVisitedDir()->isEmpty() ? currentDirectory : *lastVisitedDir()); setDirectory(lastVisitedDir()->isEmpty() ? currentDirectory : *lastVisitedDir());
if (!d->qFileDialogUi->treeView->header()->restoreState(headerData)) QHeaderView *headerView = d->qFileDialogUi->treeView->header();
if (!headerView->restoreState(headerData))
return false; 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)); setViewMode(ViewMode(viewMode));
return true; return true;
} }