LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: Subst on April 07, 2016, 05:40:17 AM

Title: renderPageFinished(int)
Post by: Subst on April 07, 2016, 05:40:17 AM
Доброго времени суток опять!

при попытке отследить процесс рендеринга, обнаружил проблему в сигнале renderPageFinished(int):

кол-во завершенных страниц всегда на 1 больше реального. Ну, как уже принято, покопался.

файл lrrenderengine.cpp, строки 546-547

    connect(m_reportRender.data(),SIGNAL(pageRendered(int)),
            this, SIGNAL(renderPageFinished(int)));

далее:

файл lrreportrender.cpp, строки 966-978:

   if (m_ranges.last().lastPage==0 && m_ranges.count()>1) {
        m_datasources->setReportVariable("#PAGE",1);
    } else {
        m_datasources->setReportVariable("#PAGE",m_datasources->variable("#PAGE").toInt()+1);
    }

    m_ranges.last().lastPage = m_pageCount;
    m_pageCount++;

    BandDesignIntf* pageFooter = m_renderPageItem->bandByType(BandDesignIntf::PageFooter);
    if (pageFooter) pageFooter->setBandIndex(++m_currentIndex);
    m_renderedPages.append(PageItemDesignIntf::Ptr(m_renderPageItem));
    emit pageRendered(m_pageCount)

мне все же видится, что увеличить m_pageCount надо после emit pageRendered(m_pageCount)

P.S. вносить изменения и пересобирать еще не пробовал,




Title: Re: renderPageFinished(int)
Post by: Arin Alex on April 07, 2016, 06:58:55 PM
Спасибо! Поправил.