py310: And another. Fixes #1955069 [Quick-select Virtual Library broken w/ python3.10](https://bugs.launchpad.net/calibre/+bug/1955069)

This commit is contained in:
Kovid Goyal 2021-12-17 05:29:24 +05:30
parent 1cdb757969
commit 5e695e8d96
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -9,6 +9,7 @@ import os
import textwrap import textwrap
import unicodedata import unicodedata
from collections import OrderedDict from collections import OrderedDict
from math import ceil
from qt.core import ( from qt.core import (
QAbstractListModel, QApplication, QCheckBox, QComboBox, QCursor, QDialog, QAbstractListModel, QApplication, QCheckBox, QComboBox, QCursor, QDialog,
QDialogButtonBox, QEvent, QFormLayout, QFrame, QGridLayout, QGroupBox, QDialogButtonBox, QEvent, QFormLayout, QFrame, QGridLayout, QGroupBox,
@ -361,7 +362,7 @@ class Results(QWidget):
self.current_result = 0 self.current_result = 0
prefixes = [QStaticText('<b>%s</b>' % os.path.basename(x)) for x in results] prefixes = [QStaticText('<b>%s</b>' % os.path.basename(x)) for x in results]
[(p.setTextFormat(Qt.TextFormat.RichText), p.setTextOption(self.text_option)) for p in prefixes] [(p.setTextFormat(Qt.TextFormat.RichText), p.setTextOption(self.text_option)) for p in prefixes]
self.maxwidth = max(x.size().width() for x in prefixes) self.maxwidth = max(int(ceil(x.size().width())) for x in prefixes)
self.results = tuple((prefix, self.make_text(text, positions), text) self.results = tuple((prefix, self.make_text(text, positions), text)
for prefix, (text, positions) in zip(prefixes, iteritems(results))) for prefix, (text, positions) in zip(prefixes, iteritems(results)))
else: else:
@ -400,9 +401,9 @@ class Results(QWidget):
p.drawStaticText(offset, prefix) p.drawStaticText(offset, prefix)
offset.setX(self.maxwidth + 5) offset.setX(self.maxwidth + 5)
p.drawStaticText(offset, self.divider) p.drawStaticText(offset, self.divider)
offset.setX(offset.x() + self.divider.size().width()) offset.setX(offset.x() + int(ceil(self.divider.size().width())))
p.drawStaticText(offset, full) p.drawStaticText(offset, full)
offset.setY(offset.y() + size.height() + self.MARGIN // 2) offset.setY(int(offset.y() + size.height() + self.MARGIN // 2))
if i in (self.current_result, self.mouse_hover_result): if i in (self.current_result, self.mouse_hover_result):
offset.setX(0) offset.setX(0)
p.save() p.save()