E-book viewer: Remove soft-hyphens when copying text to clipboard

This commit is contained in:
Kovid Goyal 2015-02-08 21:48:28 +05:30
parent e8f1f3079f
commit df780dd8e0

View File

@ -10,7 +10,7 @@ from functools import partial
from PyQt5.Qt import (QSize, QSizePolicy, QUrl, Qt, pyqtProperty, from PyQt5.Qt import (QSize, QSizePolicy, QUrl, Qt, pyqtProperty,
QPainter, QPalette, QBrush, QDialog, QColor, QPoint, QImage, QRegion, QPainter, QPalette, QBrush, QDialog, QColor, QPoint, QImage, QRegion,
QIcon, QAction, QMenu, pyqtSignal, QApplication, pyqtSlot) QIcon, QAction, QMenu, pyqtSignal, QApplication, pyqtSlot, QKeySequence)
from PyQt5.QtWebKitWidgets import QWebPage, QWebView from PyQt5.QtWebKitWidgets import QWebPage, QWebView
from PyQt5.QtWebKit import QWebSettings, QWebElement from PyQt5.QtWebKit import QWebSettings, QWebElement
@ -558,8 +558,9 @@ class DocumentView(QWebView): # {{{
self.document.selectionChanged[()].connect(self.selection_changed) self.document.selectionChanged[()].connect(self.selection_changed)
self.document.animated_scroll_done_signal.connect(self.animated_scroll_done, type=Qt.QueuedConnection) self.document.animated_scroll_done_signal.connect(self.animated_scroll_done, type=Qt.QueuedConnection)
self.document.page_turn.connect(self.page_turn_requested) self.document.page_turn.connect(self.page_turn_requested)
copy_action = self.pageAction(self.document.Copy) copy_action = self.copy_action
copy_action.setIcon(QIcon(I('convert.png'))) copy_action.setIcon(QIcon(I('convert.png')))
copy_action.triggered.connect(self.copy, Qt.QueuedConnection)
d = self.document d = self.document
self.unimplemented_actions = list(map(self.pageAction, self.unimplemented_actions = list(map(self.pageAction,
[d.DownloadImageToDisk, d.OpenLinkInNewWindow, d.DownloadLinkToDisk, [d.DownloadImageToDisk, d.OpenLinkInNewWindow, d.DownloadLinkToDisk,
@ -668,9 +669,16 @@ class DocumentView(QWebView): # {{{
def bookmark(self): def bookmark(self):
return self.document.bookmark() return self.document.bookmark()
@property
def selected_text(self):
return self.document.selectedText().replace(u'\u00ad', u'').strip()
def copy(self):
QApplication.clipboard().setText(self.selected_text)
def selection_changed(self): def selection_changed(self):
if self.manager is not None: if self.manager is not None:
self.manager.selection_changed(unicode(self.document.selectedText())) self.manager.selection_changed(self.selected_text)
def _selectedText(self): def _selectedText(self):
t = unicode(self.selectedText()).strip() t = unicode(self.selectedText()).strip()
@ -1330,6 +1338,8 @@ class DocumentView(QWebView): # {{{
elif key == 'Forward': elif key == 'Forward':
if self.manager is not None: if self.manager is not None:
self.manager.forward(None) self.manager.forward(None)
elif event.matches(QKeySequence.Copy):
self.copy()
else: else:
handled = False handled = False
return handled return handled