Restore copying of HTML

This commit is contained in:
Kovid Goyal 2018-01-28 17:38:46 +05:30
parent 0a45fa19af
commit 02848afe3c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 19 additions and 9 deletions

View File

@ -661,9 +661,13 @@ class DocumentView(QWebView): # {{{
def selected_text(self): def selected_text(self):
return self.document.selectedText().replace(u'\u00ad', u'').strip() return self.document.selectedText().replace(u'\u00ad', u'').strip()
@property
def selected_html(self):
return self.document.selectedHtml().replace(u'\u00ad', u'').strip()
def selection_changed(self): def selection_changed(self):
if self.manager is not None: if self.manager is not None:
self.manager.selection_changed(self.selected_text) self.manager.selection_changed(self.selected_text, self.selected_html)
def _selectedText(self): def _selectedText(self):
t = unicode(self.selectedText()).strip() t = unicode(self.selectedText()).strip()

View File

@ -10,8 +10,8 @@ from functools import partial
from threading import Thread from threading import Thread
from PyQt5.Qt import ( from PyQt5.Qt import (
QAction, QApplication, QByteArray, QIcon, QInputDialog, QModelIndex, QObject, QAction, QApplication, QByteArray, QIcon, QInputDialog, QMimeData, QModelIndex,
QPropertyAnimation, QSize, Qt, QTime, QTimer, pyqtSignal QObject, QPropertyAnimation, QSize, Qt, QTime, QTimer, pyqtSignal
) )
from calibre import as_unicode, force_unicode, isbytestring, prints from calibre import as_unicode, force_unicode, isbytestring, prints
@ -174,7 +174,7 @@ class EbookViewer(MainWindow):
self.pending_toc_click = None self.pending_toc_click = None
self.cursor_hidden = False self.cursor_hidden = False
self.existing_bookmarks= [] self.existing_bookmarks= []
self.selected_text = None self.selected_text = self.selected_html = None
self.was_maximized = False self.was_maximized = False
self.read_settings() self.read_settings()
self.autosave_timer = t = QTimer(self) self.autosave_timer = t = QTimer(self)
@ -570,13 +570,19 @@ class EbookViewer(MainWindow):
self.link_clicked(url) self.link_clicked(url)
self.view.setFocus(Qt.OtherFocusReason) self.view.setFocus(Qt.OtherFocusReason)
def selection_changed(self, selected_text): def selection_changed(self, selected_text, selected_html):
self.selected_text = selected_text.strip() self.selected_text = selected_text
self.action_copy.setEnabled(bool(self.selected_text)) self.selected_html = selected_html
self.action_copy.setEnabled(bool(self.selected_text) or bool(self.selected_html))
def copy(self, x=False): def copy(self, x=False):
if self.selected_text: if self.selected_text or self.selected_html:
QApplication.clipboard().setText(self.selected_text) md = QMimeData()
if self.selected_text:
md.setText(self.selected_text)
if self.selected_html:
md.setHtml(self.selected_html)
QApplication.clipboard().setMimeData(md)
def back(self, x): def back(self, x):
pos = self.history.back(self.pos.value()) pos = self.history.back(self.pos.value())