--- src/ipe/appui.cpp 2008-11-30 15:44:21.000000000 +0000 +++ src/ipe/appui_new.cpp 2009-01-18 20:26:30.000000000 +0000 @@ -627,10 +627,14 @@ } break; } - if (pno >= 0) + if (pno >= 0 && iPno != pno) { iPno = pno; - if (iPno >= iDoc->pages()) + iVno = 0; + } + if (iPno >= iDoc->pages()) { iPno = iDoc->pages() - 1; + iVno = 0; + } iDoc->SetEdited(true); PageChanged(); UpdateUndo(); @@ -934,6 +938,7 @@ ++iPno; IpePage *page = iDoc->newPage(iSnapData.iGridSize); iDoc->addPage(iPno, page); + iVno = 0; PageChanged(); iDoc->SetEdited(true); statusBar()->clearMessage(); @@ -957,6 +962,7 @@ IpeQ(tr("page deletion")))); if (iPno == iDoc->pages()) --iPno; + iVno = 0; PageChanged(); iDoc->SetEdited(true); statusBar()->clearMessage(); @@ -984,6 +990,7 @@ IpePage *original = iDoc->removePage(iPno); if (iPno == iDoc->pages()) --iPno; + iVno = 0; PageChanged(); iDoc->SetEdited(true); // undo stack takes ownership of original page @@ -1010,6 +1017,7 @@ } ++iPno; iDoc->addPage(iPno, page); + iVno = 0; PageChanged(); iDoc->SetEdited(true); AddUndo(new IpeUndoPageIns(iPno, IpeQ(tr("paste page")))); @@ -1366,6 +1374,7 @@ void AppUi::PageChanged(int no) { iPno = no - 1; + iVno = 0; PageChanged(); } @@ -1618,7 +1627,9 @@ void AppUi::PageChanged() { - iVno = 0; + if (iVno >= iDoc->page(iPno)->CountViews()) { + iVno = iDoc->page(iPno)->CountViews() - 1; + } iLayer = 0; iPageNumber->set(iPno + 1, iDoc->pages()); SetGridSizeFromPage(); --- src/ipe/loadsave.cpp 2009-01-18 20:27:01.000000000 +0000 +++ src/ipe/loadsave_new.cpp 2009-01-18 20:26:48.000000000 +0000 @@ -89,6 +89,7 @@ iUndo.Clear(); iFileName = QString::null; iPno = 0; + iVno = 0; iBookmarksShown = false; iBookmarkTools->hide(); PageChanged(); @@ -386,6 +387,7 @@ iFileName = fileName; iPno = 0; + iVno = 0; iBookmarksShown = false; iBookmarkTools->hide(); PageChanged();