Browse Source

Redo a bad merge

Jakob Truelsen 15 years ago
parent
commit
9e658b207d
1 changed files with 18 additions and 12 deletions
  1. 18 12
      src/pageconverter.cc

+ 18 - 12
src/pageconverter.cc

@@ -1,4 +1,5 @@
-
+// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
+// vi:set ts=4 sts=4 sw=4 noet :
 // This file is part of wkhtmltopdf.
 //
 // wkhtmltopdf is free software: you can redistribute it and/or modify
@@ -355,36 +356,41 @@ void PageConverterPrivate::preparePrint(bool ok) {
 
 #ifdef __EXTENSIVE_WKHTMLTOPDF_QT_HACK__
 void PageConverterPrivate::findLinks(QWebFrame * frame, QVector<QPair<QWebElement, QString> > & local, QVector<QPair<QWebElement, QString> > & external) {
-	if (!settings.useLocalLinks && !settings.useExternalLinks) return;
+	bool ulocal=true, uexternal=true;
+	if (PageObject::webPageToObject.contains(frame->page())) {
+		ulocal = PageObject::webPageToObject[frame->page()]->settings.useLocalLinks;
+		uexternal  = PageObject::webPageToObject[frame->page()]->settings.useExternalLinks;
+	}
+	if (!ulocal && !uexternal) return;
 	foreach (const QWebElement & elm, frame->findAllElements("a")) {
 		QUrl href=QUrl(elm.attribute("href"));
 		if (href.isEmpty()) continue;
 		href=frame->url().resolved(href);
-		if (urlToDoc.contains(href.toString(QUrl::RemoveFragment))) {
-			if (settings.useLocalLinks) {
-				int t = urlToDoc[href.toString(QUrl::RemoveFragment)];
+		if (urlToPageObj.contains(href.toString(QUrl::RemoveFragment))) {
+			if (ulocal) {
+				PageObject * p = urlToPageObj[href.toString(QUrl::RemoveFragment)];
 				QWebElement e;
 				if (!href.hasFragment()) 
-					e = pages[t]->mainFrame()->findFirstElement("body");
+					e = p->page->mainFrame()->findFirstElement("body");
 				else {
-					e = pages[t]->mainFrame()->findFirstElement("a[name=\""+href.fragment()+"\"]");
+					e = p->page->mainFrame()->findFirstElement("a[name=\""+href.fragment()+"\"]");
 					if(e.isNull()) 
-						e = pages[t]->mainFrame()->findFirstElement("*[id=\""+href.fragment()+"\"]");
+						e = p->page->mainFrame()->findFirstElement("*[id=\""+href.fragment()+"\"]");
 				}
 				if (e.isNull())
 					qDebug() << "Unable to find target for local link " << href; 
 				else {
-					anchors[t][href.toString()] = e;
+					p->anchors[href.toString()] = e;
 					local.push_back( qMakePair(elm, href.toString()) );
 				}
 			}
-		} else if (settings.useExternalLinks)
+		} else if (uexternal)
 			external.push_back( qMakePair(elm, href.toString() ) );
 	}
 }
 
-void PageConverterPrivate::fillParms(QHash<QString, QString> & parms, int page) {
-	outline->fillHeaderFooterParms(page, parms);
+void PageConverterPrivate::fillParms(QHash<QString, QString> & parms, int page, const settings::Page & ps) {
+	outline->fillHeaderFooterParms(page, parms, ps);
 	QDateTime t(QDateTime::currentDateTime());
 	parms["time"] = t.time().toString(Qt::SystemLocaleShortDate);
 	parms["date"] = t.date().toString(Qt::SystemLocaleShortDate);