Git commit 9a7557b9305d7a51123f026d5364fb2915086db9 by Jaroslaw Staniek, on behalf of Adam Pigg. Committed on 30/09/2011 at 11:59. Pushed by staniek into branch 'master'. Make the page view refresh when the document is updated M +1 -1 libs/koreport/common/renderobjects.cpp M +15 -7 libs/koreport/renderer/KoReportPage.cpp M +2 -0 libs/koreport/renderer/KoReportPage.h http://commits.kde.org/calligra/9a7557b9305d7a51123f026d5364fb2915086db9 diff --git a/libs/koreport/common/renderobjects.cpp b/libs/koreport/common/renderobjects.cpp index a065075..408921b 100644 --- a/libs/koreport/common/renderobjects.cpp +++ b/libs/koreport/common/renderobjects.cpp @@ -80,7 +80,7 @@ void ORODocument::setPageOptions(const ReportPageOptions & options) void ORODocument::notifyChange(int pageNo) { - emit(updated(pageNo)); + emit(updated(pageNo)); } // diff --git a/libs/koreport/renderer/KoReportPage.cpp b/libs/koreport/renderer/KoReportPage.cpp index bb182f2..7ca916e 100644 --- a/libs/koreport/renderer/KoReportPage.cpp +++ b/libs/koreport/renderer/KoReportPage.cpp @@ -34,7 +34,7 @@ KoReportPage::KoReportPage(QWidget *parent, ORODocument *document) setAttribute(Qt::WA_NoBackground); kDebug() << "CREATED PAGE"; m_reportDocument = document; - m_page = 1; + m_page = 0; int pageWidth = 0; int pageHeight = 0; @@ -56,11 +56,13 @@ KoReportPage::KoReportPage(QWidget *parent, ORODocument *document) setFixedSize(pageWidth, pageHeight); kDebug() << "PAGE IS " << pageWidth << "x" << pageHeight; - m_repaint = true; + m_pixmap = new QPixmap(pageWidth, pageHeight); setAutoFillBackground(true); m_renderer = m_factory.createInstance("screen"); + + connect(m_reportDocument, SIGNAL(updated(int)), this, SLOT(pageUpdated(int))); renderPage(1); } @@ -79,18 +81,24 @@ void KoReportPage::paintEvent(QPaintEvent*) void KoReportPage::renderPage(int page) { - kDebug() << page; -//js: is m_page needed? - m_page = page; + m_page = page - 1; m_pixmap->fill(); QPainter qp(m_pixmap); if (m_reportDocument) { KoReportRendererContext cxt; cxt.painter = &qp; - m_renderer->render(cxt, m_reportDocument, m_page - 1); + m_renderer->render(cxt, m_reportDocument, m_page); } - m_repaint = true; repaint(); } +void KoReportPage::pageUpdated(int pageNo) +{ + //Refresh this page if any of the surrounding pages change + //!TODO A small hack becuase not every update seems to work + if (m_page - 1 <= pageNo <= m_page + 1) { + renderPage(m_page + 1); + } +} + #include "KoReportPage.moc" diff --git a/libs/koreport/renderer/KoReportPage.h b/libs/koreport/renderer/KoReportPage.h index 212328c..59e3b06 100644 --- a/libs/koreport/renderer/KoReportPage.h +++ b/libs/koreport/renderer/KoReportPage.h @@ -42,6 +42,8 @@ public: public slots: virtual void paintEvent(QPaintEvent*); + + void pageUpdated(int pageNo); private: ORODocument *m_reportDocument;