[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
darin
darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:34:25 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit ca03076242c85cfccdc190e463c125014bb52878
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Apr 4 16:56:03 2003 +0000
WebCore:
Reviewed by Ken.
- fixed 3217687 -- REGRESSION: printing uses widths from screen fonts, messing up layout
To get the style machinery working for me instead of against me, I had to introduce both
FontDef and QFont to the screen/printer font dichotomy. Just following that through took
care of the bugs we were seeing.
* khtml/rendering/font.h: Add a usePrinterFont field to FontDef (in APPLE_CHANGES).
* khtml/rendering/font.cpp: (Font::update): Set the new "printer font" field on the QFont
(in APPLE_CHANGES).
* khtml/xml/dom_docimpl.cpp: (DocumentImpl::recalcStyle): Set usePrinterFont field on the
document's fontDef (in APPLE_CHANGES).
* kwq/KWQFont.h: Add isPrinterFont, setter, getter.
* kwq/KWQFont.mm:
(QFont::QFont): Default isPrinterFont to false, copy when copying.
(QFont::operator=): Copy isPrinterFont.
(QFont::setPrinterFont): Added.
(QFont::operator==): Compare isPrinterFont.
* kwq/KWQFontMetrics.mm: Remove the _rendererUsesPrinterFont field and associated code.
This was only needed when the same QFont could be both printer and screen font, but now
the QFont itself is different.
* kwq/KWQPainter.mm: (QPainter::_updateRenderer): Remove textRendererUsesPrinterFont field
and associated code, for same reason as above.
* kwq/WebCoreBridge.mm: (-[WebCoreBridge reapplyStylesForDeviceType:]): Set the document's
paint device.
* kwq/WebCoreTextRendererFactory.h: Remove global setUsingPrinterFonts: and
usingPrinterFonts methods. We now handle this at the document level. Add a usingPrinterFont:
parameter to rendererWithFont:, which is now how KHTML tells the text rendering code which
kind to use.
* kwq/WebCoreTextRendererFactory.m: Removed KWQTextRendererFactoryUsingPrinterFonts.
(-[WebCoreTextRendererFactory rendererWithFont:usingPrinterFont:]): Added parameter.
- other changes
* kwq/KWQPaintDevice.h: Store the device type instead of using a virtual function.
* kwq/KWQPrinter.h: Set device type in constructor instead of overriding devType function.
* kwq/KWQPixmap.h: Changed destructor back to non-virtual (and entire class back to
non-polymorphic), now that QPaintDevice doesn't use virtual functions any more.
* kwq/KWQPaintDeviceMetrics.h: Remove unused width() and height().
* kwq/KWQPaintDeviceMetrics.mm: Ditto.
* WebCore.pbproj/project.pbxproj: Removed KWQTextRendererFactory.h.
* kwq/KWQTextRendererFactory.h: Removed.
WebKit:
Reviewed by Ken.
- fixed 3217687 -- REGRESSION: printing uses widths from screen fonts, messing up layout
* WebCoreSupport.subproj/WebTextRendererFactory.m: Removed now-unused rendererWithFont:
which called, the now-removed usingPrinterFonts method. WebCore now calls the one with
the usingPrinterFont parameter.
* WebView.subproj/WebHTMLView.m:
(-[WebHTMLView drawRect:]): Remove setUsingPrinterFonts: calls. This is now handled by the
document on the WebCore side.
(-[WebHTMLView _setPrinting:]): Ditto.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@4024 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index c942d82..152340f 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,56 @@
+2003-04-04 Darin Adler <darin at apple.com>
+
+ Reviewed by Ken.
+
+ - fixed 3217687 -- REGRESSION: printing uses widths from screen fonts, messing up layout
+
+ To get the style machinery working for me instead of against me, I had to introduce both
+ FontDef and QFont to the screen/printer font dichotomy. Just following that through took
+ care of the bugs we were seeing.
+
+ * khtml/rendering/font.h: Add a usePrinterFont field to FontDef (in APPLE_CHANGES).
+ * khtml/rendering/font.cpp: (Font::update): Set the new "printer font" field on the QFont
+ (in APPLE_CHANGES).
+
+ * khtml/xml/dom_docimpl.cpp: (DocumentImpl::recalcStyle): Set usePrinterFont field on the
+ document's fontDef (in APPLE_CHANGES).
+
+ * kwq/KWQFont.h: Add isPrinterFont, setter, getter.
+ * kwq/KWQFont.mm:
+ (QFont::QFont): Default isPrinterFont to false, copy when copying.
+ (QFont::operator=): Copy isPrinterFont.
+ (QFont::setPrinterFont): Added.
+ (QFont::operator==): Compare isPrinterFont.
+
+ * kwq/KWQFontMetrics.mm: Remove the _rendererUsesPrinterFont field and associated code.
+ This was only needed when the same QFont could be both printer and screen font, but now
+ the QFont itself is different.
+ * kwq/KWQPainter.mm: (QPainter::_updateRenderer): Remove textRendererUsesPrinterFont field
+ and associated code, for same reason as above.
+
+ * kwq/WebCoreBridge.mm: (-[WebCoreBridge reapplyStylesForDeviceType:]): Set the document's
+ paint device.
+
+ * kwq/WebCoreTextRendererFactory.h: Remove global setUsingPrinterFonts: and
+ usingPrinterFonts methods. We now handle this at the document level. Add a usingPrinterFont:
+ parameter to rendererWithFont:, which is now how KHTML tells the text rendering code which
+ kind to use.
+ * kwq/WebCoreTextRendererFactory.m: Removed KWQTextRendererFactoryUsingPrinterFonts.
+ (-[WebCoreTextRendererFactory rendererWithFont:usingPrinterFont:]): Added parameter.
+
+ - other changes
+
+ * kwq/KWQPaintDevice.h: Store the device type instead of using a virtual function.
+ * kwq/KWQPrinter.h: Set device type in constructor instead of overriding devType function.
+ * kwq/KWQPixmap.h: Changed destructor back to non-virtual (and entire class back to
+ non-polymorphic), now that QPaintDevice doesn't use virtual functions any more.
+
+ * kwq/KWQPaintDeviceMetrics.h: Remove unused width() and height().
+ * kwq/KWQPaintDeviceMetrics.mm: Ditto.
+
+ * WebCore.pbproj/project.pbxproj: Removed KWQTextRendererFactory.h.
+ * kwq/KWQTextRendererFactory.h: Removed.
+
2003-04-03 Maciej Stachowiak <mjs at apple.com>
Reviewed by Trey.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index c942d82..152340f 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,56 @@
+2003-04-04 Darin Adler <darin at apple.com>
+
+ Reviewed by Ken.
+
+ - fixed 3217687 -- REGRESSION: printing uses widths from screen fonts, messing up layout
+
+ To get the style machinery working for me instead of against me, I had to introduce both
+ FontDef and QFont to the screen/printer font dichotomy. Just following that through took
+ care of the bugs we were seeing.
+
+ * khtml/rendering/font.h: Add a usePrinterFont field to FontDef (in APPLE_CHANGES).
+ * khtml/rendering/font.cpp: (Font::update): Set the new "printer font" field on the QFont
+ (in APPLE_CHANGES).
+
+ * khtml/xml/dom_docimpl.cpp: (DocumentImpl::recalcStyle): Set usePrinterFont field on the
+ document's fontDef (in APPLE_CHANGES).
+
+ * kwq/KWQFont.h: Add isPrinterFont, setter, getter.
+ * kwq/KWQFont.mm:
+ (QFont::QFont): Default isPrinterFont to false, copy when copying.
+ (QFont::operator=): Copy isPrinterFont.
+ (QFont::setPrinterFont): Added.
+ (QFont::operator==): Compare isPrinterFont.
+
+ * kwq/KWQFontMetrics.mm: Remove the _rendererUsesPrinterFont field and associated code.
+ This was only needed when the same QFont could be both printer and screen font, but now
+ the QFont itself is different.
+ * kwq/KWQPainter.mm: (QPainter::_updateRenderer): Remove textRendererUsesPrinterFont field
+ and associated code, for same reason as above.
+
+ * kwq/WebCoreBridge.mm: (-[WebCoreBridge reapplyStylesForDeviceType:]): Set the document's
+ paint device.
+
+ * kwq/WebCoreTextRendererFactory.h: Remove global setUsingPrinterFonts: and
+ usingPrinterFonts methods. We now handle this at the document level. Add a usingPrinterFont:
+ parameter to rendererWithFont:, which is now how KHTML tells the text rendering code which
+ kind to use.
+ * kwq/WebCoreTextRendererFactory.m: Removed KWQTextRendererFactoryUsingPrinterFonts.
+ (-[WebCoreTextRendererFactory rendererWithFont:usingPrinterFont:]): Added parameter.
+
+ - other changes
+
+ * kwq/KWQPaintDevice.h: Store the device type instead of using a virtual function.
+ * kwq/KWQPrinter.h: Set device type in constructor instead of overriding devType function.
+ * kwq/KWQPixmap.h: Changed destructor back to non-virtual (and entire class back to
+ non-polymorphic), now that QPaintDevice doesn't use virtual functions any more.
+
+ * kwq/KWQPaintDeviceMetrics.h: Remove unused width() and height().
+ * kwq/KWQPaintDeviceMetrics.mm: Ditto.
+
+ * WebCore.pbproj/project.pbxproj: Removed KWQTextRendererFactory.h.
+ * kwq/KWQTextRendererFactory.h: Removed.
+
2003-04-03 Maciej Stachowiak <mjs at apple.com>
Reviewed by Trey.
diff --git a/WebCore/WebCore.pbproj/project.pbxproj b/WebCore/WebCore.pbproj/project.pbxproj
index 7553c05..cbda0e7 100644
--- a/WebCore/WebCore.pbproj/project.pbxproj
+++ b/WebCore/WebCore.pbproj/project.pbxproj
@@ -493,7 +493,6 @@
F58786FD02DE3B8601EA4122,
F587870902DE3B8601EA4122,
F587871502DE3B8601EA4122,
- 9365C420042D169000A9CAC5,
);
isa = PBXHeadersBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
@@ -1085,18 +1084,6 @@
path = parser.y;
refType = 4;
};
- 9365C41F042D169000A9CAC5 = {
- fileEncoding = 4;
- isa = PBXFileReference;
- path = KWQTextRendererFactory.h;
- refType = 4;
- };
- 9365C420042D169000A9CAC5 = {
- fileRef = 9365C41F042D169000A9CAC5;
- isa = PBXBuildFile;
- settings = {
- };
- };
9377FB55032C235C008635CE = {
fileEncoding = 30;
isa = PBXFileReference;
@@ -1807,7 +1794,6 @@
F587853602DE375901EA4122,
F587851B02DE375901EA4122,
F587851C02DE375901EA4122,
- 9365C41F042D169000A9CAC5,
F587854002DE375901EA4122,
F587854102DE375901EA4122,
F587854302DE375901EA4122,
diff --git a/WebCore/khtml/rendering/font.cpp b/WebCore/khtml/rendering/font.cpp
index 6c21bbe..5d12bf1 100644
--- a/WebCore/khtml/rendering/font.cpp
+++ b/WebCore/khtml/rendering/font.cpp
@@ -186,6 +186,7 @@ void Font::update( QPaintDeviceMetrics* devMetrics ) const
f.setItalic(fontDef.italic);
f.setWeight(fontDef.weight);
f.setPixelSize(fontDef.size);
+ f.setPrinterFont(fontDef.usePrinterFont);
fm.setFont(f);
#else
diff --git a/WebCore/khtml/rendering/font.h b/WebCore/khtml/rendering/font.h
index f432583..c600a93 100644
--- a/WebCore/khtml/rendering/font.h
+++ b/WebCore/khtml/rendering/font.h
@@ -43,7 +43,11 @@ class FontDef
public:
FontDef()
: size( 0 ), italic( false ), smallCaps( false ), sizeSpecified(false), weight( 50 ),
- genericFamily(0), hasNbsp( true ) {}
+ genericFamily(0), hasNbsp( true )
+#if APPLE_CHANGES
+ , usePrinterFont( false )
+#endif
+ {}
bool operator == ( const FontDef &other ) const {
return ( family == other.family &&
@@ -51,7 +55,11 @@ public:
italic == other.italic &&
smallCaps == other.smallCaps &&
weight == other.weight &&
- sizeSpecified == other.sizeSpecified);
+ sizeSpecified == other.sizeSpecified
+#if APPLE_CHANGES
+ && usePrinterFont == other.usePrinterFont
+#endif
+ );
}
enum GenericFamilyType { eNone, eStandard, eSerif, eSansSerif, eMonospace, eCursive, eFantasy };
@@ -64,11 +72,14 @@ public:
short int size;
bool italic : 1;
bool smallCaps : 1;
- bool sizeSpecified : 1; // Whether or not CSS specified the size or if we're using the
+ bool sizeSpecified : 1; // Whether or not CSS specified the size or if we're using the
// default font size that the user specified via preferences.
- unsigned int weight : 8;
- unsigned int genericFamily : 3;
- mutable bool hasNbsp : 1;
+ unsigned int weight : 8;
+ unsigned int genericFamily : 3;
+ mutable bool hasNbsp : 1;
+#if APPLE_CHANGES
+ bool usePrinterFont : 1;
+#endif
};
diff --git a/WebCore/khtml/xml/dom_docimpl.cpp b/WebCore/khtml/xml/dom_docimpl.cpp
index f1dc941..0425601 100644
--- a/WebCore/khtml/xml/dom_docimpl.cpp
+++ b/WebCore/khtml/xml/dom_docimpl.cpp
@@ -914,15 +914,18 @@ void DocumentImpl::recalcStyle( StyleChange change )
fontDef.family = *(f.firstFamily());
fontDef.italic = f.italic();
fontDef.weight = f.weight();
- if (m_view) {
- const KHTMLSettings *settings = m_view->part()->settings();
- QString stdfont = settings->stdFontName();
- if ( !stdfont.isEmpty() ) {
- fontDef.family.setFamily(stdfont);
- fontDef.family.appendFamily(0);
+#if APPLE_CHANGES
+ fontDef.usePrinterFont = m_paintDevice->devType() == QInternal::Printer;
+#endif
+ if (m_view) {
+ const KHTMLSettings *settings = m_view->part()->settings();
+ QString stdfont = settings->stdFontName();
+ if ( !stdfont.isEmpty() ) {
+ fontDef.family.setFamily(stdfont);
+ fontDef.family.appendFamily(0);
+ }
+ fontDef.size = m_styleSelector->fontSizes()[3];
}
- fontDef.size = m_styleSelector->fontSizes()[3];
- }
//kdDebug() << "DocumentImpl::attach: setting to charset " << settings->charset() << endl;
_style->setFontDef(fontDef);
diff --git a/WebCore/kwq/KWQFont.h b/WebCore/kwq/KWQFont.h
index ae9aaf8..6c71883 100644
--- a/WebCore/kwq/KWQFont.h
+++ b/WebCore/kwq/KWQFont.h
@@ -63,6 +63,9 @@ public:
bool isFixedPitch() const;
+ void setPrinterFont(bool);
+ bool isPrinterFont() const { return _isPrinterFont; }
+
bool operator==(const QFont &x) const;
bool operator!=(const QFont &x) const { return !(*this == x); }
@@ -76,6 +79,7 @@ private:
KWQFontFamily _family;
int _trait;
float _size;
+ bool _isPrinterFont;
mutable NSFont *_NSFont;
};
diff --git a/WebCore/kwq/KWQFont.mm b/WebCore/kwq/KWQFont.mm
index a152077..5bfb3cb 100644
--- a/WebCore/kwq/KWQFont.mm
+++ b/WebCore/kwq/KWQFont.mm
@@ -31,6 +31,7 @@
QFont::QFont()
: _trait(0)
, _size(12.0)
+ , _isPrinterFont(false)
, _NSFont(0)
{
}
@@ -44,6 +45,7 @@ QFont::QFont(const QFont &other)
: _family(other._family)
, _trait(other._trait)
, _size(other._size)
+ , _isPrinterFont(other._isPrinterFont)
, _NSFont([other._NSFont retain])
{
}
@@ -53,6 +55,7 @@ QFont &QFont::operator=(const QFont &other)
_family = other._family;
_trait = other._trait;
_size = other._size;
+ _isPrinterFont = other._isPrinterFont;
[other._NSFont retain];
[_NSFont release];
_NSFont = other._NSFont;
@@ -104,6 +107,11 @@ void QFont::setWeight(int weight)
}
}
+void QFont::setPrinterFont(bool isPrinterFont)
+{
+ _isPrinterFont = isPrinterFont;
+}
+
int QFont::weight() const
{
return bold() ? Bold : Normal;
@@ -146,7 +154,8 @@ bool QFont::operator==(const QFont &compareFont) const
{
return _family == compareFont._family
&& _trait == compareFont._trait
- && _size == compareFont._size;
+ && _size == compareFont._size
+ && _isPrinterFont == compareFont._isPrinterFont;
}
NSFont *QFont::getNSFont() const
diff --git a/WebCore/kwq/KWQFontMetrics.mm b/WebCore/kwq/KWQFontMetrics.mm
index c63b9ec..af061b2 100644
--- a/WebCore/kwq/KWQFontMetrics.mm
+++ b/WebCore/kwq/KWQFontMetrics.mm
@@ -29,7 +29,6 @@
#import "KWQFont.h"
#import "KWQLogging.h"
-#import "KWQTextRendererFactory.h"
#import "WebCoreTextRenderer.h"
#import "WebCoreTextRendererFactory.h"
@@ -46,11 +45,10 @@ struct QFontMetricsPrivate
}
id <WebCoreTextRenderer> getRenderer()
{
- if (!_renderer || _rendererUsesPrinterFont != KWQTextRendererFactoryUsingPrinterFonts) {
- id <WebCoreTextRenderer> oldRenderer = _renderer;
- _renderer = [[[WebCoreTextRendererFactory sharedFactory] rendererWithFont:_font.getNSFont()] retain];
- _rendererUsesPrinterFont = KWQTextRendererFactoryUsingPrinterFonts;
- [oldRenderer release];
+ if (!_renderer) {
+ _renderer = [[[WebCoreTextRendererFactory sharedFactory]
+ rendererWithFont:_font.getNSFont()
+ usingPrinterFont:_font.isPrinterFont()] retain];
}
return _renderer;
}
@@ -71,7 +69,6 @@ struct QFontMetricsPrivate
private:
QFont _font;
id <WebCoreTextRenderer> _renderer;
- bool _rendererUsesPrinterFont;
QFontMetricsPrivate(const QFontMetricsPrivate&);
QFontMetricsPrivate& operator=(const QFontMetricsPrivate&);
diff --git a/WebCore/kwq/KWQPaintDevice.h b/WebCore/kwq/KWQPaintDevice.h
index 5fbe98f..7e67acf 100644
--- a/WebCore/kwq/KWQPaintDevice.h
+++ b/WebCore/kwq/KWQPaintDevice.h
@@ -34,7 +34,11 @@ struct QInternal {
class QPaintDevice {
public:
- virtual QInternal::DeviceType devType() { return QInternal::NotPrinter; }
+ QPaintDevice(QInternal::DeviceType type = QInternal::NotPrinter) : _type(type) { }
+ QInternal::DeviceType devType() const { return _type; }
+
+private:
+ QInternal::DeviceType _type;
};
#endif
diff --git a/WebCore/kwq/KWQPaintDeviceMetrics.h b/WebCore/kwq/KWQPaintDeviceMetrics.h
index bf77af8..f0d81d2 100644
--- a/WebCore/kwq/KWQPaintDeviceMetrics.h
+++ b/WebCore/kwq/KWQPaintDeviceMetrics.h
@@ -34,8 +34,6 @@ public:
int logicalDpiY() const;
int depth() const;
- int width() const;
- int height() const;
};
#endif
diff --git a/WebCore/kwq/KWQPaintDeviceMetrics.mm b/WebCore/kwq/KWQPaintDeviceMetrics.mm
index d78e20d..f4db488 100644
--- a/WebCore/kwq/KWQPaintDeviceMetrics.mm
+++ b/WebCore/kwq/KWQPaintDeviceMetrics.mm
@@ -25,8 +25,6 @@
#import "KWQPaintDeviceMetrics.h"
-#import "KWQAssertions.h"
-
QPaintDeviceMetrics::QPaintDeviceMetrics(const QPaintDevice *)
{
}
@@ -40,15 +38,3 @@ int QPaintDeviceMetrics::depth() const
{
return CGDisplayBitsPerPixel(kCGDirectMainDisplay);
}
-
-int QPaintDeviceMetrics::width() const
-{
- ERROR("returning 800 for paint device width");
- return 800;
-}
-
-int QPaintDeviceMetrics::height() const
-{
- ERROR("returning 800 for paint device height");
- return 800;
-}
diff --git a/WebCore/kwq/KWQPainter.mm b/WebCore/kwq/KWQPainter.mm
index afcb381..a9bcf4c 100644
--- a/WebCore/kwq/KWQPainter.mm
+++ b/WebCore/kwq/KWQPainter.mm
@@ -33,7 +33,6 @@
#import "KWQPrinter.h"
#import "KWQAssertions.h"
-#import "KWQTextRendererFactory.h"
#import "WebCoreImageRenderer.h"
#import "WebCoreTextRenderer.h"
@@ -54,7 +53,6 @@ struct QPainterPrivate {
QPState state;
QPtrStack<QPState> stack;
id <WebCoreTextRenderer> textRenderer;
- bool textRendererUsesPrinterFont;
QFont textRendererFont;
};
@@ -74,13 +72,9 @@ QPainter::~QPainter()
QPaintDevice *QPainter::device() const
{
- if (_isForPrinting) {
- static QPrinter thePrinter;
- return &thePrinter;
- } else {
- static QPaintDevice theScreen;
- return &theScreen;
- }
+ static QPrinter printer;
+ static QPaintDevice screen;
+ return _isForPrinting ? &printer : &screen;
}
const QFont &QPainter::font() const
@@ -443,14 +437,12 @@ void QPainter::drawTiledPixmap( int x, int y, int w, int h,
void QPainter::_updateRenderer(NSString **families)
{
- if (data->textRenderer == 0
- || data->textRendererUsesPrinterFont != KWQTextRendererFactoryUsingPrinterFonts
- || data->state.font != data->textRendererFont) {
+ if (data->textRenderer == 0 || data->state.font != data->textRendererFont) {
data->textRendererFont = data->state.font;
id <WebCoreTextRenderer> oldRenderer = data->textRenderer;
data->textRenderer = [[[WebCoreTextRendererFactory sharedFactory]
- rendererWithFont:data->textRendererFont.getNSFont()] retain];
- data->textRendererUsesPrinterFont = KWQTextRendererFactoryUsingPrinterFonts;
+ rendererWithFont:data->textRendererFont.getNSFont()
+ usingPrinterFont:data->textRendererFont.isPrinterFont()] retain];
[oldRenderer release];
}
}
diff --git a/WebCore/kwq/KWQPixmap.h b/WebCore/kwq/KWQPixmap.h
index 82baa13..84cfbed 100644
--- a/WebCore/kwq/KWQPixmap.h
+++ b/WebCore/kwq/KWQPixmap.h
@@ -52,7 +52,7 @@ public:
QPixmap(const QByteArray&);
QPixmap(int, int);
QPixmap(const QPixmap &);
- virtual ~QPixmap();
+ ~QPixmap();
bool isNull() const;
diff --git a/WebCore/kwq/KWQPrinter.h b/WebCore/kwq/KWQPrinter.h
index 38bdbe0..88b2e64 100644
--- a/WebCore/kwq/KWQPrinter.h
+++ b/WebCore/kwq/KWQPrinter.h
@@ -35,8 +35,7 @@ class QPrinter : public QPaintDevice {
ScreenResolution
} PrinterMode;
- virtual QInternal::DeviceType devType() { return QInternal::Printer; }
+ QPrinter() : QPaintDevice(QInternal::Printer) { }
};
#endif /* KWQPRINTER_H_ */
-
diff --git a/WebCore/kwq/KWQTextRendererFactory.h b/WebCore/kwq/KWQTextRendererFactory.h
deleted file mode 100644
index 1517493..0000000
--- a/WebCore/kwq/KWQTextRendererFactory.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2003 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-extern bool KWQTextRendererFactoryUsingPrinterFonts;
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index f99c191..3246e7f 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -317,6 +317,12 @@ static bool initializedObjectCacheSize = FALSE;
- (void)reapplyStylesForDeviceType:(WebCoreDeviceType)deviceType
{
_part->setMediaType(deviceType == WebCoreDeviceScreen ? "screen" : "print");
+ DocumentImpl *doc = _part->xmlDocImpl();
+ if (doc) {
+ static QPaintDevice screen;
+ static QPrinter printer;
+ doc->setPaintDevice(deviceType == WebCoreDeviceScreen ? &screen : &printer);
+ }
return _part->reparseConfiguration();
}
diff --git a/WebCore/kwq/WebCoreTextRendererFactory.h b/WebCore/kwq/WebCoreTextRendererFactory.h
index 98b1b56..0937d5e 100644
--- a/WebCore/kwq/WebCoreTextRendererFactory.h
+++ b/WebCore/kwq/WebCoreTextRendererFactory.h
@@ -33,14 +33,8 @@
+ (WebCoreTextRendererFactory *)sharedFactory;
-// Implemented on the WebCore side, not to be overriden by subclasses.
-// This affects only the renderer return from rendererWithFont:, not the font returned from fontWithFamilies:.
-- (void)setUsingPrinterFonts:(BOOL)usingPrinterFonts;
-- (BOOL)usingPrinterFonts;
-
-// Subclass responsibility.
- (NSFont *)fontWithFamilies:(NSString **)families traits:(NSFontTraitMask)traits size:(float)size;
- (BOOL)isFontFixedPitch:(NSFont *)font;
-- (id <WebCoreTextRenderer>)rendererWithFont:(NSFont *)font;
+- (id <WebCoreTextRenderer>)rendererWithFont:(NSFont *)font usingPrinterFont:(BOOL)usingPrinterFont;
@end
diff --git a/WebCore/kwq/WebCoreTextRendererFactory.m b/WebCore/kwq/WebCoreTextRendererFactory.m
index 50ff4da..2b97ab5 100644
--- a/WebCore/kwq/WebCoreTextRendererFactory.m
+++ b/WebCore/kwq/WebCoreTextRendererFactory.m
@@ -27,8 +27,6 @@
#import "KWQAssertions.h"
-bool KWQTextRendererFactoryUsingPrinterFonts;
-
@implementation WebCoreTextRendererFactory
static WebCoreTextRendererFactory *sharedFactory;
@@ -48,16 +46,6 @@ static WebCoreTextRendererFactory *sharedFactory;
return self;
}
-- (void)setUsingPrinterFonts:(BOOL)usingPrinterFonts
-{
- KWQTextRendererFactoryUsingPrinterFonts = usingPrinterFonts;
-}
-
-- (BOOL)usingPrinterFonts
-{
- return KWQTextRendererFactoryUsingPrinterFonts;
-}
-
- (NSFont *)fontWithFamilies:(NSString **)families traits:(NSFontTraitMask)traits size:(float)size
{
return nil;
@@ -68,7 +56,7 @@ static WebCoreTextRendererFactory *sharedFactory;
return NO;
}
-- (id <WebCoreTextRenderer>)rendererWithFont:(NSFont *)font
+- (id <WebCoreTextRenderer>)rendererWithFont:(NSFont *)font usingPrinterFont:(BOOL)usingPrinterFont
{
return nil;
}
diff --git a/WebCore/kwq/WebCoreTextRendererFactory.mm b/WebCore/kwq/WebCoreTextRendererFactory.mm
index 50ff4da..2b97ab5 100644
--- a/WebCore/kwq/WebCoreTextRendererFactory.mm
+++ b/WebCore/kwq/WebCoreTextRendererFactory.mm
@@ -27,8 +27,6 @@
#import "KWQAssertions.h"
-bool KWQTextRendererFactoryUsingPrinterFonts;
-
@implementation WebCoreTextRendererFactory
static WebCoreTextRendererFactory *sharedFactory;
@@ -48,16 +46,6 @@ static WebCoreTextRendererFactory *sharedFactory;
return self;
}
-- (void)setUsingPrinterFonts:(BOOL)usingPrinterFonts
-{
- KWQTextRendererFactoryUsingPrinterFonts = usingPrinterFonts;
-}
-
-- (BOOL)usingPrinterFonts
-{
- return KWQTextRendererFactoryUsingPrinterFonts;
-}
-
- (NSFont *)fontWithFamilies:(NSString **)families traits:(NSFontTraitMask)traits size:(float)size
{
return nil;
@@ -68,7 +56,7 @@ static WebCoreTextRendererFactory *sharedFactory;
return NO;
}
-- (id <WebCoreTextRenderer>)rendererWithFont:(NSFont *)font
+- (id <WebCoreTextRenderer>)rendererWithFont:(NSFont *)font usingPrinterFont:(BOOL)usingPrinterFont
{
return nil;
}
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 4d5f8b7..f68f618 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,18 @@
+2003-04-04 Darin Adler <darin at apple.com>
+
+ Reviewed by Ken.
+
+ - fixed 3217687 -- REGRESSION: printing uses widths from screen fonts, messing up layout
+
+ * WebCoreSupport.subproj/WebTextRendererFactory.m: Removed now-unused rendererWithFont:
+ which called, the now-removed usingPrinterFonts method. WebCore now calls the one with
+ the usingPrinterFont parameter.
+
+ * WebView.subproj/WebHTMLView.m:
+ (-[WebHTMLView drawRect:]): Remove setUsingPrinterFonts: calls. This is now handled by the
+ document on the WebCore side.
+ (-[WebHTMLView _setPrinting:]): Ditto.
+
2003-04-04 Maciej Stachowiak <mjs at apple.com>
Reviewed by Trey.
diff --git a/WebKit/WebCoreSupport.subproj/WebTextRendererFactory.m b/WebKit/WebCoreSupport.subproj/WebTextRendererFactory.m
index d64739c..c6f427f 100644
--- a/WebKit/WebCoreSupport.subproj/WebTextRendererFactory.m
+++ b/WebKit/WebCoreSupport.subproj/WebTextRendererFactory.m
@@ -293,11 +293,6 @@ static int getLCDScaleParameters(void)
[super dealloc];
}
-- (id <WebCoreTextRenderer>)rendererWithFont:(NSFont *)font
-{
- return [self rendererWithFont:font usingPrinterFont:[self usingPrinterFonts]];
-}
-
- (WebTextRenderer *)rendererWithFont:(NSFont *)font usingPrinterFont:(BOOL)usingPrinterFont
{
NSMutableDictionary *cache = usingPrinterFont ? cacheForPrinter : cacheForScreen;
diff --git a/WebKit/WebView.subproj/WebHTMLView.m b/WebKit/WebView.subproj/WebHTMLView.m
index e49cad5..ae72bb4 100644
--- a/WebKit/WebView.subproj/WebHTMLView.m
+++ b/WebKit/WebView.subproj/WebHTMLView.m
@@ -466,9 +466,6 @@
WebTextRendererFactory *textRendererFactory = [WebTextRendererFactory sharedFactory];
- BOOL wasUsingPrinterFonts = [textRendererFactory usingPrinterFonts];
- [textRendererFactory setUsingPrinterFonts:_private->printing];
-
BOOL subviewsWereSetAside = _private->subviewsSetAside;
if (subviewsWereSetAside) {
[self _restoreSubviews];
@@ -552,8 +549,6 @@
if (subviewsWereSetAside) {
[self _setAsideSubviews];
}
-
- [textRendererFactory setUsingPrinterFonts:wasUsingPrinterFonts];
}
// Turn off the additional clip while computing our visibleRect.
@@ -776,17 +771,10 @@
if (printing != _private->printing) {
_private->printing = printing;
- // For now, the text renderer factory is never in printer font mode
- // except when you are actually inside [WebHTMLView drawRect:].
- ASSERT(![[WebTextRendererFactory sharedFactory] usingPrinterFonts]);
- [[WebTextRendererFactory sharedFactory] setUsingPrinterFonts:printing];
-
[self setNeedsToApplyStyles:YES];
[self setNeedsLayout:YES];
[self layout];
[self setNeedsDisplay:NO];
-
- [[WebTextRendererFactory sharedFactory] setUsingPrinterFonts:NO];
}
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list