From 094449a000d00f6e44e0a7bac59329d13e0949d2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 5 Mar 2015 09:39:08 +0530 Subject: [PATCH] E-book viewer: Fix regression that prevented pasting of text with formatting from the viewer. Fixes #1428018 [no copying with formatting in built-in ebook reader](https://bugs.launchpad.net/calibre/+bug/1428018) --- src/calibre/gui2/viewer/documentview.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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: