From 4cd6c889a9f1b60577c02264035dd815faf9b8a3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 12 Dec 2012 10:40:09 +0530 Subject: [PATCH] Fix rich text delegate not working with Qt compiled in debug mode. Fixes #1089011 (calibre-0.9.9: qt assert failure upon metadata download) --- src/calibre/gui2/metadata/single_download.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/metadata/single_download.py b/src/calibre/gui2/metadata/single_download.py index cff1527b6f..ee8cd84261 100644 --- a/src/calibre/gui2/metadata/single_download.py +++ b/src/calibre/gui2/metadata/single_download.py @@ -17,10 +17,12 @@ from Queue import Queue, Empty from io import BytesIO from PyQt4.Qt import (QStyledItemDelegate, QTextDocument, QRectF, QIcon, Qt, - QApplication, QDialog, QVBoxLayout, QLabel, QDialogButtonBox, QStyle, - QStackedWidget, QWidget, QTableView, QGridLayout, QFontInfo, QPalette, - QTimer, pyqtSignal, QAbstractTableModel, QVariant, QSize, QListView, - QPixmap, QAbstractListModel, QColor, QRect, QTextBrowser, QModelIndex) + QApplication, QDialog, QVBoxLayout, QLabel, + QDialogButtonBox, QStyle, QStackedWidget, QWidget, + QTableView, QGridLayout, QFontInfo, QPalette, QTimer, + pyqtSignal, QAbstractTableModel, QVariant, QSize, + QListView, QPixmap, QAbstractListModel, QColor, QRect, + QTextBrowser, QStringListModel) from PyQt4.QtWebKit import QWebView from calibre.customize.ui import metadata_plugins @@ -44,6 +46,8 @@ class RichTextDelegate(QStyledItemDelegate): # {{{ def __init__(self, parent=None, max_width=160): QStyledItemDelegate.__init__(self, parent) self.max_width = max_width + self.dummy_model = QStringListModel([' '], self) + self.dummy_index = self.dummy_model.index(0) def to_doc(self, index, option=None): doc = QTextDocument() @@ -66,7 +70,7 @@ class RichTextDelegate(QStyledItemDelegate): # {{{ return ans def paint(self, painter, option, index): - QStyledItemDelegate.paint(self, painter, option, QModelIndex()) + QStyledItemDelegate.paint(self, painter, option, self.dummy_index) painter.save() painter.setClipRect(QRectF(option.rect)) painter.translate(option.rect.topLeft())