diff --git a/openpype/tools/project_manager/project_manager/delegates.py b/openpype/tools/project_manager/project_manager/delegates.py index f53e0442f1..51edff028f 100644 --- a/openpype/tools/project_manager/project_manager/delegates.py +++ b/openpype/tools/project_manager/project_manager/delegates.py @@ -130,6 +130,10 @@ class TypeDelegate(QtWidgets.QStyledItemDelegate): if index >= 0: editor.setCurrentIndex(index) + def setModelData(self, editor, model, index): + editor.value_cleanup() + super(TypeDelegate, self).setModelData(editor, model, index) + class ToolsDelegate(QtWidgets.QStyledItemDelegate): def __init__(self, tools_cache, *args, **kwargs): diff --git a/openpype/tools/project_manager/project_manager/widgets.py b/openpype/tools/project_manager/project_manager/widgets.py index 263b15daeb..503ecbb6bc 100644 --- a/openpype/tools/project_manager/project_manager/widgets.py +++ b/openpype/tools/project_manager/project_manager/widgets.py @@ -65,20 +65,31 @@ class FilterComboBox(QtWidgets.QComboBox): super(FilterComboBox, self).focusInEvent(event) self.lineEdit().selectAll() - def focusOutEvent(self, event): - idx = self.currentIndex() - if idx > -1: - index = self.model().index(idx, 0) - text = index.data(QtCore.Qt.DisplayRole) - if text != self.lineEdit().text(): - self.lineEdit().setText(text) - super(FilterComboBox, self).focusOutEvent(event) + def value_cleanup(self): + text = self.lineEdit().text() + idx = self.findText(text) + if idx < 0: + count = self._completer.completionModel().rowCount() + if count > 0: + index = self._completer.completionModel().index(0, 0) + text = index.data(QtCore.Qt.DisplayRole) + idx = self.findText(text) + + if idx < 0: + idx = 0 + self.setCurrentIndex(idx) def on_completer_activated(self, text): if text: index = self.findText(text) self.setCurrentIndex(index) + def keyPressEvent(self, event): + if event.key() in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter): + self.value_cleanup() + + super(FilterComboBox, self).keyPressEvent(event) + def setModel(self, model): super(FilterComboBox, self).setModel(model) self._filter_proxy_model.setSourceModel(model)