From 9b291fe87d2920ff3e35ee807e05697166fe686f Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Sat, 30 Jun 2007 18:21:19 +0200 Subject: [PATCH] Only display one spread page when meeting double spreads in two-page mode --- src/comicmain.cpp | 26 +++++++++++++++++++++++--- src/comicmain.h | 1 + 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/comicmain.cpp b/src/comicmain.cpp index 4d6a080..61a29f2 100644 --- a/src/comicmain.cpp +++ b/src/comicmain.cpp @@ -728,7 +728,7 @@ void ComicMainWindow::nextPage() { if (sink) { - if (twoPagesAction->isOn() && cfg->twoPagesStep()) + if (!spreading && twoPagesAction->isOn() && cfg->twoPagesStep()) { if (currpage < sink->numOfImages() - 2) //do not change pages if last two pages are visible jumpToPage(currpage + 2); @@ -786,12 +786,32 @@ void ComicMainWindow::jumpToPage(int n, bool force) if ((n != currpage) || force) { int result1, result2; + int page_off = 0; const bool preserveangle = togglePreserveRotationAction->isOn(); if (twoPagesAction->isOn()) { - ImlibImage *img1 = sink->getImage(currpage = n, result1); - ImlibImage *img2 = sink->getImage(currpage + 1, result2); + ImlibImage *img1, *img2; + img1 = sink->getImage(currpage = n, result1); + if (img1->getFormat() == SPREAD_FORMAT) + { + result2 = 1; + spreading = true; + } + else + { + spreading = false; + img2 = sink->getImage(currpage + (++page_off), result2); + } + + // Ignore spreads as second pages + while (result2 == 0 && img2->getFormat() == SPREAD_FORMAT) + { + delete img2; + img2 = sink->getImage(currpage + (++page_off), result2); + spreading = true; + } + if (result2 == 0) { if (mangaModeAction->isOn()) diff --git a/src/comicmain.h b/src/comicmain.h index 94b8629..5274209 100644 --- a/src/comicmain.h +++ b/src/comicmain.h @@ -48,6 +48,7 @@ namespace QComicBook StatusBar *statusbar; ComicBookSettings *cfg; int currpage; //!