fix incorrect code that was not restoring clipboard

This commit is contained in:
Damien Elmes 2013-07-18 19:56:47 +09:00
parent adf4f4687c
commit 9ccb21fe09

View file

@ -989,17 +989,17 @@ class EditorWebView(AnkiWebView):
self._flagAnkiText() self._flagAnkiText()
def onPaste(self): def onPaste(self):
mime = self.prepareClip() mime = self.mungeClip()
self.triggerPageAction(QWebPage.Paste) self.triggerPageAction(QWebPage.Paste)
self.restoreClip(mime) self.restoreClip()
def mouseReleaseEvent(self, evt): def mouseReleaseEvent(self, evt):
if not isMac and not isWin and evt.button() == Qt.MidButton: if not isMac and not isWin and evt.button() == Qt.MidButton:
# middle click on x11; munge the clipboard before standard # middle click on x11; munge the clipboard before standard
# handling # handling
mime = self.prepareClip(mode=QClipboard.Selection) mime = self.mungeClip(mode=QClipboard.Selection)
AnkiWebView.mouseReleaseEvent(self, evt) AnkiWebView.mouseReleaseEvent(self, evt)
self.restoreClip(mime, mode=QClipboard.Selection) self.restoreClip(mode=QClipboard.Selection)
else: else:
AnkiWebView.mouseReleaseEvent(self, evt) AnkiWebView.mouseReleaseEvent(self, evt)
@ -1041,21 +1041,20 @@ class EditorWebView(AnkiWebView):
self.eval("dropTarget.focus();") self.eval("dropTarget.focus();")
self.setFocus() self.setFocus()
def prepareClip(self, mode=QClipboard.Clipboard): def mungeClip(self, mode=QClipboard.Clipboard):
clip = self.editor.mw.app.clipboard() clip = self.editor.mw.app.clipboard()
mime = clip.mimeData(mode=mode) mime = clip.mimeData(mode=mode)
self.saveClip(mode=mode) self.saveClip(mode=mode)
mime = self._processMime(mime) mime = self._processMime(mime)
clip.setMimeData(mime, mode=mode) clip.setMimeData(mime, mode=mode)
return mime
def restoreClip(self, mime, mode=QClipboard.Clipboard): def restoreClip(self, mode=QClipboard.Clipboard):
if not mime:
return
clip = self.editor.mw.app.clipboard() clip = self.editor.mw.app.clipboard()
clip.setMimeData(mime, mode=mode) clip.setMimeData(self.savedClip, mode=mode)
def saveClip(self, mode): 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 or we'll crash
mime = self.editor.mw.app.clipboard().mimeData(mode=mode) mime = self.editor.mw.app.clipboard().mimeData(mode=mode)
n = QMimeData() n = QMimeData()
if mime.hasText(): if mime.hasText():
@ -1066,7 +1065,7 @@ class EditorWebView(AnkiWebView):
n.setUrls(mime.urls()) n.setUrls(mime.urls())
if mime.hasImage(): if mime.hasImage():
n.setImageData(mime.imageData()) n.setImageData(mime.imageData())
return n self.savedClip = n
def _processMime(self, mime): def _processMime(self, mime):
# print "html=%s image=%s urls=%s txt=%s" % ( # print "html=%s image=%s urls=%s txt=%s" % (