diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 2e0fdd3c17..4042ef44f8 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -8,9 +8,10 @@ import os, math, json from base64 import b64encode from functools import partial -from PyQt5.Qt import (QSize, QSizePolicy, QUrl, Qt, pyqtProperty, - QPainter, QPalette, QBrush, QDialog, QColor, QPoint, QImage, QRegion, - QIcon, QAction, QMenu, pyqtSignal, QApplication, pyqtSlot, QKeySequence) +from PyQt5.Qt import ( + QSize, QSizePolicy, QUrl, Qt, pyqtProperty, QPainter, QPalette, QBrush, + QDialog, QColor, QPoint, QImage, QRegion, QIcon, QAction, QMenu, + pyqtSignal, QApplication, pyqtSlot, QKeySequence, QMimeData) from PyQt5.QtWebKitWidgets import QWebPage, QWebView from PyQt5.QtWebKit import QWebSettings, QWebElement @@ -674,7 +675,13 @@ class DocumentView(QWebView): # {{{ return self.document.selectedText().replace(u'\u00ad', u'').strip() def copy(self): - QApplication.clipboard().setText(self.selected_text) + self.document.triggerAction(self.document.Copy) + c = QApplication.clipboard() + html = c.text('html')[0].replace(u'\u00ad', u'').strip() + md = QMimeData() + md.setText(self.selected_text) + md.setHtml(html) + QApplication.clipboard().setMimeData(md) def selection_changed(self): if self.manager is not None: