[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