From 28e71c11624ccc91c306f36238e8789d05deb786 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 13 Feb 2024 10:36:35 +0530 Subject: [PATCH] Windows: Fix a regression in calibre 7 that caused images in long text columns to not be displayed in the tooltip for the tooltip Yet another Qt regression. Sigh. https://bugreports.qt.io/browse/QTBUG-122201 --- src/calibre/gui2/library/models.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 1ebe70b76d..aafce57bc2 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -22,7 +22,9 @@ from qt.core import ( from calibre import ( fit_image, human_readable, isbytestring, prepare_string_for_xml, strftime, ) -from calibre.constants import DEBUG, config_dir, dark_link_color, filesystem_encoding +from calibre.constants import ( + DEBUG, config_dir, dark_link_color, filesystem_encoding, iswindows, +) from calibre.db.search import CONTAINS_MATCH, EQUALS_MATCH, REGEXP_MATCH, _match from calibre.db.utils import force_to_bool from calibre.ebooks.metadata import authors_to_string, fmt_sidx, string_to_authors @@ -914,8 +916,17 @@ class BooksModel(QAbstractTableModel): # {{{ text = fffunc(field_obj, idfunc(idx)) return (text) if force_to_bool(text) is None else None else: - def func(idx): - return (fffunc(field_obj, idfunc(idx), default_value='')) + if iswindows and dt == 'comments': + # https://bugreports.qt.io/browse/QTBUG-122201 + file_pat = re.compile(r'"file:///([a-zA-Z]):/(.+?)"') + def func(idx): + ans = fffunc(field_obj, idfunc(idx), default_value='') + if ans: + ans = file_pat.sub(r'"file:///\1%3a/\2"', ans) + return ans + else: + def func(idx): + return fffunc(field_obj, idfunc(idx), default_value='') elif dt == 'datetime': def func(idx): val = fffunc(field_obj, idfunc(idx), default_value=UNDEFINED_DATE)