ENH: Improve performance with file completion. Fix for #8292.
This commit is contained in:
parent
64b377d707
commit
b0c8b15fb9
|
@ -104,15 +104,32 @@ void QCMakePathEditor::chooseFile()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use same QDirModel for all completers
|
||||||
|
static QDirModel* fileDirModel()
|
||||||
|
{
|
||||||
|
static QDirModel* m = NULL;
|
||||||
|
if(!m)
|
||||||
|
{
|
||||||
|
m = new QDirModel();
|
||||||
|
}
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
static QDirModel* pathDirModel()
|
||||||
|
{
|
||||||
|
static QDirModel* m = NULL;
|
||||||
|
if(!m)
|
||||||
|
{
|
||||||
|
m = new QDirModel();
|
||||||
|
m->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot);
|
||||||
|
}
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
QCMakeFileCompleter::QCMakeFileCompleter(QObject* o, bool dirs)
|
QCMakeFileCompleter::QCMakeFileCompleter(QObject* o, bool dirs)
|
||||||
: QCompleter(o)
|
: QCompleter(o)
|
||||||
{
|
{
|
||||||
QDirModel* model = new QDirModel(this);
|
QDirModel* m = dirs ? pathDirModel() : fileDirModel();
|
||||||
if(dirs)
|
this->setModel(m);
|
||||||
{
|
|
||||||
model->setFilter(QDir::AllDirs | QDir::Drives | QDir::NoDotAndDotDot);
|
|
||||||
}
|
|
||||||
this->setModel(model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QCMakeFileCompleter::pathFromIndex(const QModelIndex& idx) const
|
QString QCMakeFileCompleter::pathFromIndex(const QModelIndex& idx) const
|
||||||
|
|
Loading…
Reference in New Issue