mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 18:24:30 -04:00
...
This commit is contained in:
parent
34f6626c2a
commit
ad00a746a9
@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
import weakref
|
import weakref
|
||||||
|
|
||||||
|
import sip
|
||||||
from PyQt4.Qt import (QLineEdit, QAbstractListModel, Qt, pyqtSignal, QObject,
|
from PyQt4.Qt import (QLineEdit, QAbstractListModel, Qt, pyqtSignal, QObject,
|
||||||
QApplication, QListView, QPoint, QModelIndex)
|
QApplication, QListView, QPoint, QModelIndex)
|
||||||
|
|
||||||
@ -82,7 +83,6 @@ class Completer(QListView): # {{{
|
|||||||
self.entered.connect(self.item_entered)
|
self.entered.connect(self.item_entered)
|
||||||
self.activated.connect(self.item_chosen)
|
self.activated.connect(self.item_chosen)
|
||||||
self.pressed.connect(self.item_chosen)
|
self.pressed.connect(self.item_chosen)
|
||||||
self.eat_focus_out = True
|
|
||||||
self.installEventFilter(self)
|
self.installEventFilter(self)
|
||||||
|
|
||||||
def hide(self):
|
def hide(self):
|
||||||
@ -167,7 +167,7 @@ class Completer(QListView): # {{{
|
|||||||
def eventFilter(self, obj, e):
|
def eventFilter(self, obj, e):
|
||||||
'Redirect key presses from the popup to the widget'
|
'Redirect key presses from the popup to the widget'
|
||||||
widget = self.completer_widget()
|
widget = self.completer_widget()
|
||||||
if widget is None:
|
if widget is None or sip.isdeleted(widget):
|
||||||
return False
|
return False
|
||||||
etype = e.type()
|
etype = e.type()
|
||||||
if obj is not self:
|
if obj is not self:
|
||||||
@ -198,9 +198,9 @@ class Completer(QListView): # {{{
|
|||||||
e.accept()
|
e.accept()
|
||||||
return True
|
return True
|
||||||
# Send to widget
|
# Send to widget
|
||||||
self.eat_focus_out = False
|
widget.eat_focus_out = False
|
||||||
widget.keyPressEvent(e)
|
widget.keyPressEvent(e)
|
||||||
self.eat_focus_out = True
|
widget.eat_focus_out = True
|
||||||
if not widget.hasFocus():
|
if not widget.hasFocus():
|
||||||
# Widget lost focus hide the popup
|
# Widget lost focus hide the popup
|
||||||
self.hide()
|
self.hide()
|
||||||
@ -335,6 +335,7 @@ class EditWithComplete(EnComboBox):
|
|||||||
EnComboBox.__init__(self, *args)
|
EnComboBox.__init__(self, *args)
|
||||||
self.setLineEdit(LineEdit(self, completer_widget=self))
|
self.setLineEdit(LineEdit(self, completer_widget=self))
|
||||||
self.setCompleter(None)
|
self.setCompleter(None)
|
||||||
|
self.eat_focus_out = True
|
||||||
self.installEventFilter(self)
|
self.installEventFilter(self)
|
||||||
|
|
||||||
# Interface {{{
|
# Interface {{{
|
||||||
@ -389,9 +390,12 @@ class EditWithComplete(EnComboBox):
|
|||||||
EnComboBox.clear(self)
|
EnComboBox.clear(self)
|
||||||
|
|
||||||
def eventFilter(self, obj, e):
|
def eventFilter(self, obj, e):
|
||||||
c = self.lineEdit().mcompleter
|
try:
|
||||||
|
c = self.lineEdit().mcompleter
|
||||||
|
except AttributeError:
|
||||||
|
return False
|
||||||
etype = e.type()
|
etype = e.type()
|
||||||
if c.eat_focus_out and self is obj and etype == e.FocusOut:
|
if self.eat_focus_out and self is obj and etype == e.FocusOut:
|
||||||
if c.isVisible():
|
if c.isVisible():
|
||||||
return True
|
return True
|
||||||
return EnComboBox.eventFilter(self, obj, e)
|
return EnComboBox.eventFilter(self, obj, e)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user