[PATCH] Print: fix truncated table in "Table print" mode

Lubomir I. Ivanov neolit123 at gmail.com
Thu Dec 5 04:10:05 UTC 2013


refs #326

lubomir
--


On 5 December 2013 14:08, Lubomir I. Ivanov <neolit123 at gmail.com> wrote:
> From: "Lubomir I. Ivanov" <neolit123 at gmail.com>
>
> The whole procedure here is quite confusing.
> Once we have our model populated, we need to estimate where
> to put page headers (each page has one) and to do that we
> store a list of indexes, where a page would begin (pageIndexes).
>
> But since a row can end up being chopped at the end of a page
> we move it to a new page and this particular part was lacking
> compensation for the moved row's height, when storing the *last*
> pageIndex.
>
> For N number of pages we are losing N - 1 dives, or such that
> were previously transferred on a new page.
>
> Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
> ---
>
> please test!
> ---
>  qt-ui/printlayout.cpp | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/qt-ui/printlayout.cpp b/qt-ui/printlayout.cpp
> index 556bf13..004188c 100644
> --- a/qt-ui/printlayout.cpp
> +++ b/qt-ui/printlayout.cpp
> @@ -328,7 +328,7 @@ void PrintLayout::printTable()
>         // a list of vertical offsets where pages begin and some helpers
>         QList<unsigned int> pageIndexes;
>         pageIndexes.append(0);
> -       int tableHeight = 0, rowH = 0, accH = 0;
> +       int tableHeight = 0, rowH = 0, accH = 0, headings = 0;
>
>         // process all rows
>         progress = 0;
> @@ -339,6 +339,7 @@ void PrintLayout::printTable()
>                 if (accH > scaledPageH) { // push a new page index and add a heading
>                         pageIndexes.append(pageIndexes.last() + (accH - rowH));
>                         addTablePrintHeadingRow(&model, i);
> +                       headings += rowH; // last row was moved to a new page; compensate!
>                         accH = 0;
>                         i--;
>                 }
> @@ -346,7 +347,7 @@ void PrintLayout::printTable()
>                 progress++;
>                 emit signalProgress(stage + (progress * stage) / total);
>         }
> -       pageIndexes.append(pageIndexes.last() + accH);
> +       pageIndexes.append(pageIndexes.last() + accH + headings);
>         // resize the whole widget so that it can be rendered
>         table.resize(scaledPageW, tableHeight);
>
> --
> 1.7.11.msysgit.0
>


More information about the subsurface mailing list