mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-24 15:18:26 -05: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
|
/* 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user