Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: renderPageFinished(int)  (Read 3199 times)

Subst

  • Sr. Member
  • ****
  • Posts: 450
    • View Profile
renderPageFinished(int)
« 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. вносить изменения и пересобирать еще не пробовал,





Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: renderPageFinished(int)
« Reply #1 on: April 07, 2016, 06:58:55 pm »
Спасибо! Поправил.