support html stripping on middle click paste too

This commit is contained in:
Damien Elmes 2012-02-13 16:10:53 +09:00
parent 3cd54d349a
commit ccf571290b

View file

@ -830,8 +830,17 @@ class EditorWebView(AnkiWebView):
if shiftPaste: if shiftPaste:
self.triggerPageAction(QWebPage.Paste) self.triggerPageAction(QWebPage.Paste)
QWebView.keyPressEvent(self, evt) QWebView.keyPressEvent(self, evt)
if self.origClip: self.restoreClip()
self.restoreClip()
def mouseReleaseEvent(self, evt):
if not isMac and not isWin and evt.button() == Qt.MidButton:
# middle click on x11; munge the clipboard before standard
# handling
self.prepareClip(mode=QClipboard.Selection)
AnkiWebView.mouseReleaseEvent(self, evt)
self.restoreClip(mode=QClipboard.Selection)
else:
AnkiWebView.mouseReleaseEvent(self, evt)
# Buggy; disable for now. # Buggy; disable for now.
# def contextMenuEvent(self, evt): # def contextMenuEvent(self, evt):
@ -863,10 +872,10 @@ class EditorWebView(AnkiWebView):
evt.accept() evt.accept()
QWebView.dropEvent(self, new) QWebView.dropEvent(self, new)
def prepareClip(self, keep=False): def prepareClip(self, keep=False, mode=QClipboard.Clipboard):
clip = self.editor.mw.app.clipboard() clip = self.editor.mw.app.clipboard()
mime = clip.mimeData() mime = clip.mimeData(mode=mode)
self.saveClip() self.saveClip(mode=mode)
if keep: if keep:
new = QMimeData() new = QMimeData()
if mime.hasHtml(): if mime.hasHtml():
@ -876,15 +885,17 @@ class EditorWebView(AnkiWebView):
mime = new mime = new
else: else:
mime = self._processMime(mime) mime = self._processMime(mime)
clip.setMimeData(mime) clip.setMimeData(mime, mode=mode)
def restoreClip(self): def restoreClip(self, mode=QClipboard.Clipboard):
if not self.origClip:
return
clip = self.editor.mw.app.clipboard() clip = self.editor.mw.app.clipboard()
clip.setMimeData(self.origClip) clip.setMimeData(self.origClip, mode=mode)
def saveClip(self): def saveClip(self, mode):
# we don't own the clipboard object, so we need to copy it # we don't own the clipboard object, so we need to copy it
mime = self.editor.mw.app.clipboard().mimeData() mime = self.editor.mw.app.clipboard().mimeData(mode=mode)
n = QMimeData() n = QMimeData()
if mime.hasText(): if mime.hasText():
n.setText(mime.text()) n.setText(mime.text())