Changeset 16d9761d262c…
Parent cf9e825ea150…
by
Changes to 4 files · Browse files at 16d9761d262c Showing diff from parent cf9e825ea150 Diff from another changeset...
@@ -15,7 +15,7 @@
from tortoisehg.util import hglib, paths
from tortoisehg.hgqt.i18n import _, localgettext
-from tortoisehg.hgqt import qtlib, thread
+from tortoisehg.hgqt import qtlib, qscilib, thread
local = localgettext()
@@ -152,6 +152,8 @@ self.internallog = useInternal
if useInternal:
self.output_text = LogWidget()
+ self.output_text.installEventFilter(
+ qscilib.KeyPressInterceptor(self))
### Public Methods ###
@@ -311,12 +313,6 @@ self._initfont()
self._initmarkers()
- def keyPressEvent(self, event):
- if event.key() == Qt.Key_Escape:
- event.ignore()
- return
- super(LogWidget, self).keyPressEvent(event)
-
def _initfont(self):
tf = qtlib.getfont('fontlog')
tf.changed.connect(lambda f: self.setFont(f))
|
@@ -66,12 +66,6 @@ self.setWhitespaceVisibility(QsciScintilla.WsInvisible)
def keyPressEvent(self, event):
- if event.key() == Qt.Key_Escape:
- event.ignore()
- return
- if event.matches(QKeySequence.Refresh):
- event.ignore()
- return
if event.modifiers() == Qt.ControlModifier and event.key() == Qt.Key_E:
self.reflowPressed.emit()
super(MessageEntry, self).keyPressEvent(event)
@@ -151,6 +145,7 @@ msgte.reflowPressed.connect(self.reflowPressed)
msgte.setContextMenuPolicy(Qt.CustomContextMenu)
msgte.customContextMenuRequested.connect(self.menuRequested)
+ msgte.installEventFilter(qscilib.KeyPressInterceptor(self))
vbox.addWidget(msgte, 1)
upperframe = QFrame()
|
@@ -83,20 +83,6 @@ idx = uniqrevs.index(rev)
self.markerAdd(i, self.markers[idx % len(self.markers)])
-class FileDisplay(qscilib.Scintilla):
- def __init__(self, parent=None):
- super(FileDisplay, self).__init__(parent)
- self.setWrapMode(qsci.WrapCharacter)
-
- def keyPressEvent(self, event):
- if event.key() == Qt.Key_Escape:
- event.ignore()
- return
- if event.matches(QKeySequence.Refresh):
- event.ignore()
- return
- super(FileDisplay, self).keyPressEvent(event)
-
class HgFileView(QFrame):
"""file diff and content viewer"""
@@ -135,12 +121,14 @@ framelayout.addLayout(self.topLayout)
framelayout.addLayout(l, 1)
- self.sci = FileDisplay(self)
+ self.sci = qscilib.Scintilla(self)
self.sci.setFrameStyle(0)
l.addWidget(self.sci, 1)
#self.sci.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.sci.setReadOnly(True)
self.sci.setUtf8(True)
+ self.sci.setWrapMode(qsci.WrapCharacter)
+ self.sci.installEventFilter(qscilib.KeyPressInterceptor(self))
self.sci.SendScintilla(qsci.SCI_SETCARETSTYLE, 0)
|
@@ -368,3 +368,36 @@ """Request search with the given pattern"""
self.setPattern(text)
self._emitSearchRequested()
+
+class KeyPressInterceptor(QObject):
+ """Grab key press events important for dialogs
+
+ Usage::
+ sci = qscilib.Scintilla(self)
+ sci.installEventFilter(KeyPressInterceptor(self))
+ """
+
+ def __init__(self, parent=None, keys=None, keyseqs=None):
+ super(KeyPressInterceptor, self).__init__(parent)
+ self._keys = set((Qt.Key_Escape,))
+ self._keyseqs = set((QKeySequence.Refresh,))
+ if keys:
+ self._keys.update(keys)
+ if keyseqs:
+ self._keyseqs.update(keyseqs)
+
+ def eventFilter(self, watched, event):
+ if event.type() != QEvent.KeyPress:
+ return super(KeyPressInterceptor, self).eventFilter(
+ watched, event)
+ if self._isinterceptable(event):
+ event.ignore()
+ return True
+ return False
+
+ def _isinterceptable(self, event):
+ if event.key() in self._keys:
+ return True
+ if util.any(event.matches(e) for e in self._keyseqs):
+ return True
+ return False
|
Loading...