From df780dd8e07af2d759dde9ba0ce5a84b6c1330dd Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 8 Feb 2015 21:48:28 +0530 Subject: [PATCH] E-book viewer: Remove soft-hyphens when copying text to clipboard --- src/calibre/gui2/viewer/documentview.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 1fd474c2bb..2e0fdd3c17 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -10,7 +10,7 @@ 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) + QIcon, QAction, QMenu, pyqtSignal, QApplication, pyqtSlot, QKeySequence) from PyQt5.QtWebKitWidgets import QWebPage, QWebView from PyQt5.QtWebKit import QWebSettings, QWebElement @@ -558,8 +558,9 @@ class DocumentView(QWebView): # {{{ self.document.selectionChanged[()].connect(self.selection_changed) self.document.animated_scroll_done_signal.connect(self.animated_scroll_done, type=Qt.QueuedConnection) 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.triggered.connect(self.copy, Qt.QueuedConnection) d = self.document self.unimplemented_actions = list(map(self.pageAction, [d.DownloadImageToDisk, d.OpenLinkInNewWindow, d.DownloadLinkToDisk, @@ -668,9 +669,16 @@ class DocumentView(QWebView): # {{{ def bookmark(self): 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): if self.manager is not None: - self.manager.selection_changed(unicode(self.document.selectedText())) + self.manager.selection_changed(self.selected_text) def _selectedText(self): t = unicode(self.selectedText()).strip() @@ -1330,6 +1338,8 @@ class DocumentView(QWebView): # {{{ elif key == 'Forward': if self.manager is not None: self.manager.forward(None) + elif event.matches(QKeySequence.Copy): + self.copy() else: handled = False return handled