diff --git a/qelectrotech.pro b/qelectrotech.pro index cdc190847..aaa37339c 100644 --- a/qelectrotech.pro +++ b/qelectrotech.pro @@ -163,3 +163,11 @@ unix { } } } + +# From Qt 4.8, we disable the QPicture-based cache for titleblock rendering +# because it leads to bad rendering then crash. +contains(QT_VERSION, ^4\\.[0-7]\\..*) { + message("Detected Qt < 4.8: disabling QPicture-based cache for titleblock rendering.") + DEFINES += QET_TBT_USE_QPICTURE_BASED_CACHE +} + diff --git a/sources/titleblocktemplaterenderer.cpp b/sources/titleblocktemplaterenderer.cpp index 6fb3c71be..8a9eb9776 100644 --- a/sources/titleblocktemplaterenderer.cpp +++ b/sources/titleblocktemplaterenderer.cpp @@ -61,6 +61,7 @@ int TitleBlockTemplateRenderer::height() const { void TitleBlockTemplateRenderer::render(QPainter *provided_painter, int titleblock_width) { if (!titleblock_template_) return; +#ifdef QET_TBT_USE_QPICTURE_BASED_CACHE // Do we really need to calculate all this again? if (titleblock_width != last_known_titleblock_width_ || rendered_template_.isNull()) { renderToQPicture(titleblock_width); @@ -69,6 +70,9 @@ void TitleBlockTemplateRenderer::render(QPainter *provided_painter, int titleblo provided_painter -> save(); rendered_template_.play(provided_painter); provided_painter -> restore(); +#else + titleblock_template_ -> render(*provided_painter, context_, titleblock_width); +#endif } /**