mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 00:11:07 -06:00
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:
@@ -1,12 +1,17 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
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 <utility>
|
||||
|
||||
#include <QDirModel>
|
||||
#include <QFileDialog>
|
||||
#include <QFileInfo>
|
||||
#include <QFileSystemModel>
|
||||
#include <QResizeEvent>
|
||||
#include <QToolButton>
|
||||
|
||||
@@ -88,20 +93,20 @@ void QCMakePathEditor::chooseFile()
|
||||
}
|
||||
}
|
||||
|
||||
// use same QFileSystemModel for all completers
|
||||
static QFileSystemModel* fileDirModel()
|
||||
// use same QDirModel for all completers
|
||||
static QDirModel* fileDirModel()
|
||||
{
|
||||
static QFileSystemModel* m = nullptr;
|
||||
static QDirModel* m = nullptr;
|
||||
if (!m) {
|
||||
m = new QFileSystemModel();
|
||||
m = new QDirModel();
|
||||
}
|
||||
return m;
|
||||
}
|
||||
static QFileSystemModel* pathDirModel()
|
||||
static QDirModel* pathDirModel()
|
||||
{
|
||||
static QFileSystemModel* m = nullptr;
|
||||
static QDirModel* m = nullptr;
|
||||
if (!m) {
|
||||
m = new QFileSystemModel();
|
||||
m = new QDirModel();
|
||||
m->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot);
|
||||
}
|
||||
return m;
|
||||
@@ -110,7 +115,7 @@ static QFileSystemModel* pathDirModel()
|
||||
QCMakeFileCompleter::QCMakeFileCompleter(QObject* o, bool dirs)
|
||||
: QCompleter(o)
|
||||
{
|
||||
QFileSystemModel* m = dirs ? pathDirModel() : fileDirModel();
|
||||
QDirModel* m = dirs ? pathDirModel() : fileDirModel();
|
||||
this->setModel(m);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user