Version: HEAD (using KDE KDE 3.5.0) Installed from: Compiled From Sources OS: Linux PROBLEM: Kst crashes when printing a plot that contains a legend STEPS TO REPRODUCE: Start Kst Launch the data wizard Create a single plot with the Legend turned on Select File...Print... EXPECTED RESULTS: File is saved RESULTS: Kst crashes
Can't reproduce.
Created attachment 15995 [details] Proposed patch The problem was that updateSelf() in Kst2dPlot was being called from revertForPrint(). This was causing a negatively sized plot region. Once this propagated through to KstViewLegend the resulting null bitmap resulted in a crash. The revertForPrint() is no longer necessary as the various bugs in the clip region and buffering have since been addressed.
SVN commit 539423 by arwalker: BUG:126992 A narrower fix than the proposed patch, as we may wish to later change the printing resize functions M +10 -8 kstviewlegend.cpp M +0 -3 kstviewobject.cpp --- trunk/extragear/graphics/kst/src/libkstapp/kstviewlegend.cpp #539422:539423 @@ -207,14 +207,16 @@ setDirty(false); _backBuffer.buffer().resize(contentsRect().size()); - _backBuffer.buffer().fill(backgroundColor()); - KstPainter p; - p.begin(&_backBuffer.buffer()); - QPen pen; - pen.setColor(foregroundColor()); - p.setPen(pen); - drawToPainter(p); - p.end(); + if (!_backBuffer.buffer().isNull()) { + _backBuffer.buffer().fill(backgroundColor()); + KstPainter p; + p.begin(&_backBuffer.buffer()); + QPen pen; + pen.setColor(foregroundColor()); + p.setPen(pen); + drawToPainter(p); + p.end(); + } } --- trunk/extragear/graphics/kst/src/libkstapp/kstviewobject.cpp #539422:539423 @@ -625,7 +625,6 @@ void KstViewObject::parentResizedForPrint() { _geomOld = _geom; updateFromAspect(); - //updateSelf(); for (KstViewObjectList::Iterator i = _children.begin(); i != _children.end(); ++i) { (*i)->parentResizedForPrint(); } @@ -634,8 +633,6 @@ void KstViewObject::parentRevertedForPrint() { _geom = _geomOld; - invalidateClipRegion(); - updateSelf(); for (KstViewObjectList::Iterator i = _children.begin(); i != _children.end(); ++i) { (*i)->parentRevertedForPrint(); }