minor bugfix in reload

svn path=/trunk/kdegraphics/kdvi/; revision=55680
remotes/origin/kdvi-2.0
Stefan Kebekus 26 years ago
parent cb30f9700e
commit 0ec7acd4ac
  1. 10
      dviwin.cpp
  2. 2
      dviwin.h
  3. 4
      kdvi_multipage.cpp

@ -147,7 +147,7 @@ dviWindow::dviWindow( int bdpi, double zoom, const char *mfm, int mkpk, QWidget
mane.shrinkfactor = currwin.shrinkfactor = (double)basedpi/(xres*zoom); mane.shrinkfactor = currwin.shrinkfactor = (double)basedpi/(xres*zoom);
_zoom = zoom; _zoom = zoom;
PS_interface = new ghostscript_interface(0.0, 0, 0); PS_interface = new ghostscript_interface(0.0, 0, 0);
is_current_page_drawn = 0;
prog = const_cast<char*>("kdvi"); prog = const_cast<char*>("kdvi");
n_files_left = OPEN_MAX; n_files_left = OPEN_MAX;
kpse_set_progname ("kdvi"); kpse_set_progname ("kdvi");
@ -377,8 +377,6 @@ void dviWindow::setFile( const char *fname )
page_w = (int)(unshrunk_page_w / mane.shrinkfactor + 0.5) + 2; page_w = (int)(unshrunk_page_w / mane.shrinkfactor + 0.5) + 2;
page_h = (int)(unshrunk_page_h / mane.shrinkfactor + 0.5) + 2; page_h = (int)(unshrunk_page_h / mane.shrinkfactor + 0.5) + 2;
if (current_page >= dviFile->total_pages)
current_page = dviFile->total_pages - 1;
// Extract PostScript from the DVI file, and store the PostScript // Extract PostScript from the DVI file, and store the PostScript
// specials in PostScriptDirectory, and the headers in the // specials in PostScriptDirectory, and the headers in the
@ -389,7 +387,6 @@ void dviWindow::setFile( const char *fname )
// document. So declare the existing list empty. // document. So declare the existing list empty.
numAnchors = 0; numAnchors = 0;
int save_current_page = current_page;
for(current_page=0; current_page < dviFile->total_pages; current_page++) { for(current_page=0; current_page < dviFile->total_pages; current_page++) {
PostScriptOutPutString = new QString(); PostScriptOutPutString = new QString();
@ -406,7 +403,7 @@ void dviWindow::setFile( const char *fname )
delete PostScriptOutPutString; delete PostScriptOutPutString;
} }
PostScriptOutPutString = NULL; PostScriptOutPutString = NULL;
current_page = save_current_page; is_current_page_drawn = 0;
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
return; return;
@ -423,9 +420,10 @@ void dviWindow::gotoPage(int new_page)
new_page = 1; new_page = 1;
if (new_page > dviFile->total_pages) if (new_page > dviFile->total_pages)
new_page = dviFile->total_pages; new_page = dviFile->total_pages;
if (new_page-1==current_page) if ((new_page-1==current_page) && !is_current_page_drawn)
return; return;
current_page = new_page-1; current_page = new_page-1;
is_current_page_drawn = 0;
drawPage(); drawPage();
} }

@ -152,6 +152,8 @@ private:
QString paper_type; QString paper_type;
int ChangesPossible; int ChangesPossible;
int current_page; int current_page;
// Indicates if the current page is already drawn (=1) or not (=0).
char is_current_page_drawn;
double _zoom; double _zoom;
}; };

@ -370,8 +370,12 @@ void KDVIMultiPage::reload()
timer_id = -1; timer_id = -1;
int currsav = window->curr_page(); int currsav = window->curr_page();
window->setFile(m_file); window->setFile(m_file);
window->gotoPage(currsav); window->gotoPage(currsav);
// @@@ Problem here. When kviewshell received this signal, it
// automatically moves to page one. This is very unfortunate
// indeed, I must say.
emit numberOfPages(window->totalPages()); emit numberOfPages(window->totalPages());
scrollView()->resizeContents(window->width(), window->height()); scrollView()->resizeContents(window->width(), window->height());
emit previewChanged(true); emit previewChanged(true);

Loading…
Cancel
Save