Handle focus loss for cmd bar

This commit is contained in:
Florian Bruhin 2014-01-17 07:18:48 +01:00
parent 7d285fa5a3
commit 08207d6f9d

View File

@ -1,5 +1,5 @@
from PyQt5.QtWidgets import QLineEdit, QHBoxLayout, QLabel, QWidget
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QLineEdit, QHBoxLayout, QLabel, QWidget, QShortcut
from PyQt5.QtCore import pyqtSignal, Qt
from PyQt5.QtGui import QValidator
class StatusBar(QWidget):
@ -46,6 +46,12 @@ class StatusCommand(QLineEdit):
self.setValidator(CmdValidator())
self.returnPressed.connect(self.process_cmd)
# FIXME this does not work
self.esc = QShortcut(self)
self.esc.setKey(Qt.Key_Escape)
self.esc.setContext(Qt.WidgetWithChildrenShortcut)
self.esc.activated.connect(parent.setFocus)
def process_cmd(self):
text = self.text().lstrip(':')
self.setText('')
@ -55,6 +61,10 @@ class StatusCommand(QLineEdit):
self.setText(text)
self.setFocus()
def focusOutEvent(self, event):
self.setText('')
super().focusOutEvent(event)
class CmdValidator(QValidator):
def validate(self, string, pos):
if string.startswith(':'):