def eventFilter(self, o, e): if e.type() == QEvent.KeyPress: if e.key() == Qt.Key_Tab or e.key() == Qt.Key_J and e.modifiers() & Qt.ControlModifier: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_Down, e.modifiers(), '' ) QApplication.sendEvent(o, ne) return True elif e.key() == Qt.Key_Tab or e.key() == Qt.Key_K and e.modifiers() & Qt.ControlModifier: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_Up, e.modifiers(), e.text(), e.isAutoRepeat(), e.count() ) QApplication.sendEvent(o, ne) return True elif e.key() == Qt.Key_Up and self.attop: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_End, Qt.ControlModifier ) QApplication.sendEvent(o, ne) return True elif e.key() == Qt.Key_Down and self.atbottom: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_Home, Qt.ControlModifier ) QApplication.sendEvent(o, ne) return True return self.super.eventFilter(o, e)
def eventFilter(self, o, e): #if e.type() == QEvent.MouseButtonPress: ##self.popup.hide() #self.editor.setFocus() #return True if o == self.popup: if not self.popup.underMouse() and e.type() in ( QEvent.MouseButtonPress, #QEvent.MouseButtonRelease, #QEvent.MouseButtonDblClick, #QEvent.MouseMove ): self.popup.hide() #self.editor.setFocus() #QApplication.sendEvent(self.editor, e) return False elif e.type() == QEvent.KeyPress: key = e.key() if e.key() == Qt.Key_Tab or e.key() == Qt.Key_J and e.modifiers() & Qt.ControlModifier: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_Down, e.modifiers(), '' ) QApplication.sendEvent(o, ne) return True elif e.key() == Qt.Key_Tab or e.key() == Qt.Key_K and e.modifiers() & Qt.ControlModifier: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_Up, e.modifiers(), e.text(), e.isAutoRepeat(), e.count() ) QApplication.sendEvent(o, ne) return True elif e.key() == Qt.Key_Up and self.attop: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_End, Qt.ControlModifier ) QApplication.sendEvent(o, ne) return True elif e.key() == Qt.Key_Down and self.atbottom: ne = QKeyEvent( QEvent.KeyPress, Qt.Key_Home, Qt.ControlModifier ) QApplication.sendEvent(o, ne) return True elif key in (Qt.Key_Enter, Qt.Key_Return): self.done(self.popup.currentIndex()) return True #elif key in (Qt.Key_Escape, ): #self.editor.setFocus() #self.popup.hide() #return True #elif key in ( #Qt.Key_Home, #Qt.Key_End, #): #QApplication.sendEvent(self.editor, e) #return True #elif key in ( #Qt.Key_Up, #Qt.Key_Down, #Qt.Key_Home, #Qt.Key_End, #Qt.Key_PageUp, #Qt.Key_PageDown #): #pass else: #self.editor.setFocus() #self.editor.event(e) #TODO: why HOME and END not processed by editor? QApplication.sendEvent(self.editor, e) #self.popup.hide() return self.super.eventFilter(o, e)