Fix Qt side crash when forwarding editor auto-complete keypresses (#2510)
This commit is contained in:
@@ -1080,6 +1080,7 @@ class GuiDocEditor(QPlainTextEdit):
|
|||||||
|
|
||||||
if (block := self._qDocument.findBlock(pos)).isValid():
|
if (block := self._qDocument.findBlock(pos)).isValid():
|
||||||
text = block.text()
|
text = block.text()
|
||||||
|
|
||||||
if text and text[0] in "@%" and added + removed == 1:
|
if text and text[0] in "@%" and added + removed == 1:
|
||||||
# Only run on single character changes, or it will trigger
|
# Only run on single character changes, or it will trigger
|
||||||
# at unwanted times when other changes are made to the document
|
# at unwanted times when other changes are made to the document
|
||||||
@@ -1094,10 +1095,6 @@ class GuiDocEditor(QPlainTextEdit):
|
|||||||
point = self.cursorRect().bottomRight()
|
point = self.cursorRect().bottomRight()
|
||||||
self._completer.move(viewport.mapToGlobal(point))
|
self._completer.move(viewport.mapToGlobal(point))
|
||||||
self._completer.show()
|
self._completer.show()
|
||||||
else:
|
|
||||||
self._completer.close()
|
|
||||||
else:
|
|
||||||
self._completer.close()
|
|
||||||
|
|
||||||
if self._doReplace and added == 1:
|
if self._doReplace and added == 1:
|
||||||
cursor = self.textCursor()
|
cursor = self.textCursor()
|
||||||
@@ -1121,7 +1118,7 @@ class GuiDocEditor(QPlainTextEdit):
|
|||||||
cursor.setPosition(check, QtMoveAnchor)
|
cursor.setPosition(check, QtMoveAnchor)
|
||||||
cursor.setPosition(check + length, QtKeepAnchor)
|
cursor.setPosition(check + length, QtKeepAnchor)
|
||||||
cursor.insertText(text)
|
cursor.insertText(text)
|
||||||
self._completer.hide()
|
self._completer.close()
|
||||||
return
|
return
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
@@ -2186,6 +2183,7 @@ class CommandCompleter(QMenu):
|
|||||||
):
|
):
|
||||||
super().keyPressEvent(event)
|
super().keyPressEvent(event)
|
||||||
elif isinstance(parent, GuiDocEditor):
|
elif isinstance(parent, GuiDocEditor):
|
||||||
|
self.close() # Close to release the event lock before forwarding the key press (#2510)
|
||||||
parent.keyPressEvent(event)
|
parent.keyPressEvent(event)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user