QmlDesigner: Keep search on when adding a material or texture

Fixes: QDS-8487
Change-Id: Id02d693a5a707e97555450ce860ee4480e7742eb
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Mahmoud Badri
2022-12-07 18:47:19 +02:00
parent 4b6c1c9f14
commit b530f938ba
5 changed files with 23 additions and 4 deletions

View File

@@ -213,6 +213,11 @@ void MaterialBrowserModel::setSearchText(const QString &searchText)
m_searchText = lowerSearchText;
refreshSearch();
}
void MaterialBrowserModel::refreshSearch()
{
bool isEmpty = false;
// if selected material goes invisible, select nearest material
@@ -256,9 +261,13 @@ void MaterialBrowserModel::setMaterials(const QList<ModelNode> &materials, bool
emit isEmptyChanged();
}
setHasQuick3DImport(hasQuick3DImport);
if (!m_searchText.isEmpty())
refreshSearch();
else
resetModel();
updateSelectedMaterial();
resetModel();
setHasQuick3DImport(hasQuick3DImport);
}
void MaterialBrowserModel::removeMaterial(const ModelNode &material)

View File

@@ -37,6 +37,7 @@ public:
QHash<int, QByteArray> roleNames() const override;
void setSearchText(const QString &searchText);
void refreshSearch();
bool hasQuick3DImport() const;
void setHasQuick3DImport(bool b);

View File

@@ -94,6 +94,11 @@ void MaterialBrowserTexturesModel::setSearchText(const QString &searchText)
m_searchText = lowerSearchText;
refreshSearch();
}
void MaterialBrowserTexturesModel::refreshSearch()
{
bool isEmpty = false;
// if selected texture goes invisible, select nearest one

View File

@@ -29,6 +29,7 @@ public:
QHash<int, QByteArray> roleNames() const override;
void setSearchText(const QString &searchText);
void refreshSearch();
QList<ModelNode> textures() const;
void setTextures(const QList<ModelNode> &textures);

View File

@@ -244,7 +244,6 @@ void MaterialBrowserView::refreshModel(bool updateImages)
}
}
m_widget->clearSearchFilter();
m_widget->materialBrowserModel()->setMaterials(materials, m_hasQuick3DImport);
m_widget->materialBrowserTexturesModel()->setTextures(textures);
m_widget->materialBrowserModel()->setHasMaterialLibrary(matLib.isValid());
@@ -366,9 +365,11 @@ void MaterialBrowserView::nodeReparented(const ModelNode &node,
}
int idx = m_widget->materialBrowserModel()->materialIndex(node);
m_widget->materialBrowserModel()->selectMaterial(idx);
m_widget->materialBrowserModel()->refreshSearch();
} else { // is texture
int idx = m_widget->materialBrowserTexturesModel()->textureIndex(node);
m_widget->materialBrowserTexturesModel()->selectTexture(idx);
m_widget->materialBrowserTexturesModel()->refreshSearch();
}
}
@@ -452,8 +453,10 @@ void MaterialBrowserView::customNotification(const AbstractView *view,
m_widget->materialBrowserModel()->selectMaterial(idx);
} else if (identifier == "selected_texture_changed") {
int idx = m_widget->materialBrowserTexturesModel()->textureIndex(nodeList.first());
if (idx != -1)
if (idx != -1) {
m_widget->materialBrowserTexturesModel()->selectTexture(idx);
m_widget->materialBrowserTexturesModel()->refreshSearch();
}
} else if (identifier == "refresh_material_browser") {
QTimer::singleShot(0, model(), [this]() {
refreshModel(true);