cmake-gui: Restore completion during path editing

Revert commit 0fc1818831 (QCMakeWidgets: replace QDirModel, 2020-06-15,
v3.19.0-rc1~696^2).  `QFileSystemModel` is not a drop-in replacement for
`QDirModel`.  Additional changes are needed to make it work fully.
Revert the change and suppress the `QDirModel` deprecation warning
pending further investigation.

Fixes: #21589
This commit is contained in:
Brad King
2020-12-15 08:29:50 -05:00
parent 7932e0a46e
commit 854f5ea1cb
+14 -9
View File
@@ -1,12 +1,17 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */ file Copyright.txt or https://cmake.org/licensing for details. */
// FIXME: Port to QFileSystemModel from the deprecated QDirModel.
// Be sure completion works when incrementally editing existing paths.
#define QT_DEPRECATED_WARNINGS_SINCE QT_VERSION_CHECK(5, 14, 0)
#include "QCMakeWidgets.h" #include "QCMakeWidgets.h"
#include <utility> #include <utility>
#include <QDirModel>
#include <QFileDialog> #include <QFileDialog>
#include <QFileInfo> #include <QFileInfo>
#include <QFileSystemModel>
#include <QResizeEvent> #include <QResizeEvent>
#include <QToolButton> #include <QToolButton>
@@ -88,20 +93,20 @@ void QCMakePathEditor::chooseFile()
} }
} }
// use same QFileSystemModel for all completers // use same QDirModel for all completers
static QFileSystemModel* fileDirModel() static QDirModel* fileDirModel()
{ {
static QFileSystemModel* m = nullptr; static QDirModel* m = nullptr;
if (!m) { if (!m) {
m = new QFileSystemModel(); m = new QDirModel();
} }
return m; return m;
} }
static QFileSystemModel* pathDirModel() static QDirModel* pathDirModel()
{ {
static QFileSystemModel* m = nullptr; static QDirModel* m = nullptr;
if (!m) { if (!m) {
m = new QFileSystemModel(); m = new QDirModel();
m->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot); m->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot);
} }
return m; return m;
@@ -110,7 +115,7 @@ static QFileSystemModel* pathDirModel()
QCMakeFileCompleter::QCMakeFileCompleter(QObject* o, bool dirs) QCMakeFileCompleter::QCMakeFileCompleter(QObject* o, bool dirs)
: QCompleter(o) : QCompleter(o)
{ {
QFileSystemModel* m = dirs ? pathDirModel() : fileDirModel(); QDirModel* m = dirs ? pathDirModel() : fileDirModel();
this->setModel(m); this->setModel(m);
} }