Viewer search panel: Show more result context in a tooltip when hovering over a search result. Fixes #1899834 [[Enhancement - Viewer] Show the entire paragraph as you hover over a search result in the Search panel](https://bugs.launchpad.net/calibre/+bug/1899834)

This commit is contained in:
Kovid Goyal 2020-10-15 08:24:45 +05:30
parent 384e3a02be
commit 20c64aeae2
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -3,14 +3,14 @@
# License: GPL v3 Copyright: 2020, Kovid Goyal <kovid at kovidgoyal.net>
import json
from collections import Counter, OrderedDict
from threading import Thread
import regex
from collections import Counter, OrderedDict
from PyQt5.Qt import (
QCheckBox, QComboBox, QFont, QHBoxLayout, QIcon, QLabel, Qt, QToolButton,
QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget, pyqtSignal
)
from threading import Thread
from html import escape
from calibre.ebooks.conversion.search_replace import REGEX_FLAGS
from calibre.gui2 import warning_dialog
@ -282,7 +282,7 @@ def toc_nodes_for_search_result(sr):
return tuple(tmap.toc_nodes_for_offset(sr.offset))
def search_in_name(name, search_query, ctx_size=50):
def search_in_name(name, search_query, ctx_size=75):
raw = searchable_text_for_name(name)[0]
for match in search_query.regex.finditer(raw):
start, end = match.span()
@ -479,6 +479,9 @@ class Results(QTreeWidget): # {{{
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemNeverHasChildren)
item.setData(0, Qt.UserRole, result)
item.setData(0, Qt.UserRole + 1, len(self.search_results))
if isinstance(result, SearchResult):
tt = '<p>' + escape(result.before, False) + '<b>' + escape(result.text, False) + '</b>' + escape(result.after, False)
item.setData(0, Qt.ToolTipRole, tt)
item.setIcon(0, self.blank_icon)
self.item_map[len(self.search_results)] = item
self.search_results.append(result)