[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kugar/lib
From: Adam Treat <treat () kde ! org>
Date: 2006-01-25 18:03:56
Message-ID: 1138212236.377051.8135.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 502329 by treat:
* Fix crash when changing pages on reloaded report.
M +1 -1 mpagecollection.cpp
M +1 -1 mpagecollection.h
M +8 -4 mreportengine.cpp
M +1 -1 mreportengine.h
M +7 -26 mreportviewer.cpp
M +2 -1 mreportviewer.h
--- trunk/koffice/kugar/lib/mpagecollection.cpp #502328:502329
@@ -15,7 +15,7 @@
{
/** Constructor */
-MPageCollection::MPageCollection() : QObject()
+MPageCollection::MPageCollection( QObject *parent ) : QObject( parent )
{
// Set page list to AutoDelete
pages.setAutoDelete( true );
--- trunk/koffice/kugar/lib/mpagecollection.h #502328:502329
@@ -26,7 +26,7 @@
public:
/** Constructor */
- MPageCollection();
+ MPageCollection( QObject *parent );
/** Copy constructor */
MPageCollection( const MPageCollection& mPageCollection );
/** Assignment operator */
--- trunk/koffice/kugar/lib/mreportengine.cpp #502328:502329
@@ -85,8 +85,6 @@
{
// Clear the grand total data
grandTotal.clear();
- if ( m_pageCollection )
- m_pageCollection->removeRef();
kdDebug( 31000 ) << k_funcinfo << endl;
}
@@ -107,7 +105,9 @@
{
rHeader.clear();
pHeader.clear();
+ dHeaders.clear();
details.clear();
+ dFooters.clear();
pFooter.clear();
rFooter.clear();
}
@@ -272,7 +272,11 @@
if ( !m_needRegeneration )
return m_pageCollection;
if ( m_pageCollection )
- m_pageCollection->removeRef();
+ {
+ m_pageCollection->deleteLater();
+ m_pageCollection = 0;
+ }
+
unsigned int j;
unsigned int i;
@@ -280,7 +284,7 @@
cancelRender = false;
// Create the page collection
- MPageCollection* pages = new MPageCollection;
+ MPageCollection* pages = new MPageCollection( this );
// Initialize the basic page data
currHeight = pageHeight - ( topMargin + bottomMargin + pFooter.getHeight() );
--- trunk/koffice/kugar/lib/mreportengine.h #502328:502329
@@ -79,7 +79,7 @@
private:
- QGuardedPtr<MPageCollection> m_pageCollection;
+ MPageCollection *m_pageCollection;
bool m_needRegeneration;
/** Report data document */
QDomDocument rd;
--- trunk/koffice/kugar/lib/mreportviewer.cpp #502328:502329
@@ -37,9 +37,6 @@
{
scroller = new QScrollView( this );
- // Create the report engine
- report = 0;
-
// Connect the rendering update signal and slot
connect( rptEngine, SIGNAL( signalRenderStatus( int ) ),
SLOT( slotRenderProgress( int ) ) );
@@ -71,7 +68,6 @@
MReportViewer::~MReportViewer()
{
clearReport();
- //delete rptEngine;
rptEngine->removeRef();
}
@@ -85,7 +81,6 @@
scroller->resize( event->size() );
}
-
// Set the report's data from an in-line string.
bool MReportViewer::setReportData( const QString &data )
@@ -121,17 +116,11 @@
/** Generates the report's page collection */
bool MReportViewer::renderReport()
{
- // Check if a previous report exists and
- // if so de-allocated it
- if ( report != 0 )
- report->removeRef();
- // delete report;
-
// Render the report
report = rptEngine->renderReport();
// Display the first page of the report
- if ( report != 0 && report->getFirstPage() != 0 )
+ if ( report && report->getFirstPage() != 0 )
{
display->setPageDimensions( report->pageDimensions() );
display->setPage( report->getFirstPage() );
@@ -148,21 +137,13 @@
{
// Hide the display
display->hide();
-
- // De-Allocate any report
- if ( report )
- {
- report->removeRef();
- //delete report;
- report = 0;
- }
}
/** Prints the rendered report to the selected printer - displays KDE print dialog */
void MReportViewer::printReport()
{
// Check for a report
- if ( report == 0 )
+ if ( !report )
return ;
// Get the page count
@@ -188,7 +169,7 @@
{
QPicture * page;
- if ( report == 0 )
+ if ( !report )
return ;
if ( ( page = report->getFirstPage() ) != 0 )
@@ -203,7 +184,7 @@
{
QPicture * page;
- if ( report == 0 )
+ if ( !report )
return ;
int index = report->getCurrentIndex();
@@ -222,7 +203,7 @@
{
QPicture * page;
- if ( report == 0 )
+ if ( !report )
return ;
int index = report->getCurrentIndex();
@@ -241,7 +222,7 @@
{
QPicture * page;
- if ( report == 0 )
+ if ( !report )
return ;
if ( ( page = report->getLastPage() ) != 0 )
@@ -300,7 +281,7 @@
void MReportViewer::printReport( KPrinter &printer )
{
// Check for a report
- if ( report == 0 )
+ if ( !report )
return ;
// Get the page count
--- trunk/koffice/kugar/lib/mreportviewer.h #502328:502329
@@ -18,6 +18,7 @@
#include <qpainter.h>
#include <qpaintdevicemetrics.h>
#include <qprogressdialog.h>
+#include <qguardedptr.h>
#include <koffice_export.h>
#include "mreportengine.h"
#include "mpagecollection.h"
@@ -79,7 +80,7 @@
QScrollView *scroller;
MPageDisplay *display;
MReportEngine *rptEngine;
- MPageCollection *report;
+ QGuardedPtr<MPageCollection> report;
KPrinter *printer;
private:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic