[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
rjw
rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:52:18 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit ad730ae5fb226cab81d90814291b5e1d45168fd9
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Nov 14 01:23:34 2001 +0000
More optimizations to improve performance of font metrics.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@450 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/kwq/KWQFontMetrics.mm b/WebCore/kwq/KWQFontMetrics.mm
index dea661f..6e00264 100644
--- a/WebCore/kwq/KWQFontMetrics.mm
+++ b/WebCore/kwq/KWQFontMetrics.mm
@@ -28,51 +28,124 @@
#include <qfontmetrics.h>
#define ROUND_TO_INT(f) ((int)rint((f)))
+const float LargeNumberForText = 1.0e7;
+
+ at interface WSMetricsInfo : NSObject
+{
+ NSFont *font;
+ NSTextContainer *textContainer;
+ NSLayoutManager *layoutManager;
+ NSDictionary *attributes;
+ NSMutableDictionary *boundingRectCache;
+}
+
++ (WSMetricsInfo *)getMetricsForFont: (NSFont *)aFont;
++ (void)setMetric: (WSMetricsInfo *)info forFont: (NSFont *)aFont;
+- initWithFont: (NSFont *)aFont;
+- (NSRect)rectForString:(NSString *)string;
+
+ at end
+
+static NSMutableDictionary *metricsCache = nil;
+
+ at implementation WSMetricsInfo
++ (WSMetricsInfo *)getMetricsForFont: (NSFont *)aFont
+{
+ WSMetricsInfo *info = (WSMetricsInfo *)[metricsCache objectForKey: aFont];
+ if (info == nil){
+ info = [[WSMetricsInfo alloc] initWithFont: aFont];
+ [WSMetricsInfo setMetric: info forFont: aFont];
+ [info release];
+ }
+ return info;
+}
++ (void)setMetric: (WSMetricsInfo *)info forFont: (NSFont *)aFont
+{
+ if (metricsCache == nil)
+ metricsCache = [[NSMutableDictionary alloc] init];
+ [metricsCache setObject: info forKey: aFont];
+}
+
+- initWithFont: (NSFont *)aFont
+{
+ [super init];
+ font = [aFont retain];
+ textContainer = [[NSTextContainer alloc] initWithContainerSize:NSMakeSize(LargeNumberForText, LargeNumberForText)];
+ layoutManager = [[NSLayoutManager alloc] init];
+ [layoutManager addTextContainer: textContainer];
+ attributes = [[NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil] retain];
+ return self;
+}
+
+- (NSRect)rectForString:(NSString *)string
+ {
+ NSValue *cachedValue;
+ NSTextStorage *textStorage;
+
+ if (boundingRectCache == nil){
+ boundingRectCache = [[NSMutableDictionary alloc] init];
+ }
+
+ cachedValue = [boundingRectCache objectForKey: string];
+ if (cachedValue != nil){
+ return [cachedValue rectValue];
+ }
+
+ if (textContainer == nil){
+ textContainer = [[NSTextContainer alloc] initWithContainerSize:NSMakeSize(LargeNumberForText, LargeNumberForText)];
+ layoutManager = [[NSLayoutManager alloc] init];
+ [layoutManager addTextContainer: textContainer];
+ attributes = [[NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil] retain];
+ }
+
+ textStorage = [[NSTextStorage alloc] initWithString:string attributes: attributes];
+ [textStorage addLayoutManager: layoutManager];
+
+ unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
+ NSRect glyphRect = [layoutManager boundingRectForGlyphRange: NSMakeRange (0, numberOfGlyphs) inTextContainer: textContainer];
+
+ [textStorage removeLayoutManager: layoutManager];
+ [textStorage release];
+
+ [boundingRectCache setObject: [NSValue valueWithRect: glyphRect] forKey: string];
+
+ return glyphRect;
+}
+
+- (void)dealloc
+{
+ [textContainer release];
+ [layoutManager release];
+ [attributes release];
+}
+
+ at end
+
struct QFontMetricsPrivate {
friend class QFontMetrics;
public:
- QFontMetricsPrivate() :
- font(0),
- textContainer(0),
- layoutManager(0),
- attributes(0),
- boundingRectCache(0),
- lastLength(0)
+ QFontMetricsPrivate(NSFont *aFont)
{
+ font = [aFont retain];
+ info = [[WSMetricsInfo getMetricsForFont: aFont] retain];
}
~QFontMetricsPrivate()
{
+ if (info){
+ [info release];
+ info = 0;
+ }
if (font){
[font release];
font = 0;
}
- if (textContainer){
- [textContainer release];
- textContainer = 0;
- }
- if (layoutManager){
- [layoutManager release];
- layoutManager = 0;
- }
- if (attributes){
- [attributes release];
- attributes = 0;
- }
- if (boundingRectCache){
- [boundingRectCache release];
- boundingRectCache = 0;
- }
}
private:
+ WSMetricsInfo *info;
NSFont *font;
- NSTextContainer *textContainer;
- NSLayoutManager *layoutManager;
- NSDictionary *attributes;
- NSMutableDictionary *boundingRectCache;
- int lastLength;
};
@@ -84,39 +157,23 @@ QFontMetrics::QFontMetrics()
QFontMetrics::QFontMetrics(const QFont &withFont)
{
- _initializeWithData (0);
- data->font = [withFont.font retain];
+ _initializeWithFont (withFont.font);
}
QFontMetrics::QFontMetrics(const QFontMetrics ©From)
{
- _initializeWithData(copyFrom.data);
+ _initializeWithFont(copyFrom.data->font);
}
void QFontMetrics::_initialize()
{
- _initializeWithData (0);
+ _initializeWithFont (0);
}
-void QFontMetrics::_initializeWithData (QFontMetricsPrivate *withData)
+void QFontMetrics::_initializeWithFont (NSFont *font)
{
- data = new QFontMetricsPrivate();
-
- if (withData == 0){
- data->font = [QFont::defaultNSFont() retain];
- data->textContainer = 0;
- data->layoutManager = 0;
- data->attributes = 0;
- data->boundingRectCache = 0;
- }
- else {
- data->font = [withData->font retain];
- data->textContainer = [withData->textContainer retain];
- data->layoutManager = [withData->layoutManager retain];
- data->attributes = [withData->attributes retain];
- data->boundingRectCache = [withData->boundingRectCache retain];
- }
+ data = new QFontMetricsPrivate(font);
}
void QFontMetrics::_free(){
@@ -147,51 +204,12 @@ int QFontMetrics::height() const
return ROUND_TO_INT([data->font defaultLineHeightForFont]);
}
-const float LargeNumberForText = 1.0e7;
-
-NSRect QFontMetrics::_rectOfString(NSString *string) const
- {
- NSValue *cachedValue;
- NSTextStorage *textStorage;
-
- if (data->boundingRectCache == nil){
- data->boundingRectCache = [[NSMutableDictionary alloc] init];
- }
-
- cachedValue = [data->boundingRectCache objectForKey: string];
- if (cachedValue != nil){
- return [cachedValue rectValue];
- }
-
- if (data->textContainer == nil){
- data->textContainer = [[NSTextContainer alloc] initWithContainerSize:NSMakeSize(LargeNumberForText, LargeNumberForText)];
- data->layoutManager = [[NSLayoutManager alloc] init];
- [data->layoutManager addTextContainer: data->textContainer];
- data->attributes = [[NSDictionary dictionaryWithObjectsAndKeys:data->font, NSFontAttributeName, nil] retain];
- }
-
- textStorage = [[NSTextStorage alloc] initWithString:string attributes: data->attributes];
- [textStorage addLayoutManager: data->layoutManager];
-
- unsigned numberOfGlyphs = [data->layoutManager numberOfGlyphs];
- NSRect glyphRect = [data->layoutManager boundingRectForGlyphRange: NSMakeRange (0, numberOfGlyphs) inTextContainer: data->textContainer];
-
- [textStorage removeLayoutManager: data->layoutManager];
- [textStorage release];
-
- [data->boundingRectCache setObject: [NSValue valueWithRect: glyphRect] forKey: string];
-
- return glyphRect;
-}
-
-
-
int QFontMetrics::width(QChar qc) const
{
ushort c = qc.unicode();
NSString *string = [NSString stringWithCharacters: (const unichar *)&c length: 1];
- int stringWidth = ROUND_TO_INT(_rectOfString(string).size.width);
+ int stringWidth = ROUND_TO_INT([data->info rectForString: string].size.width);
return stringWidth;
}
@@ -200,7 +218,7 @@ int QFontMetrics::width(QChar qc) const
int QFontMetrics::width(char c) const
{
NSString *string = [NSString stringWithCString: &c length: 1];
- int stringWidth = ROUND_TO_INT(_rectOfString(string).size.width);
+ int stringWidth = ROUND_TO_INT([data->info rectForString: string].size.width);
return stringWidth;
}
@@ -213,7 +231,7 @@ int QFontMetrics::width(const QString &qstring, int len) const
string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
else
string = QSTRING_TO_NSSTRING (qstring);
- int stringWidth = ROUND_TO_INT(_rectOfString(string).size.width);
+ int stringWidth = ROUND_TO_INT([data->info rectForString: string].size.width);
return stringWidth;
}
@@ -232,7 +250,7 @@ QRect QFontMetrics::boundingRect(const QString &qstring, int len) const
string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
else
string = QSTRING_TO_NSSTRING (qstring);
- NSRect rect = _rectOfString(string);
+ NSRect rect = [data->info rectForString: string];
return QRect(ROUND_TO_INT(rect.origin.x),
ROUND_TO_INT(rect.origin.y),
@@ -245,7 +263,7 @@ QRect QFontMetrics::boundingRect(QChar qc) const
{
ushort c = qc.unicode();
NSString *string = [NSString stringWithCharacters: (const unichar *)&c length: 1];
- NSRect rect = _rectOfString(string);
+ NSRect rect = [data->info rectForString: string];
return QRect(ROUND_TO_INT(rect.origin.x),
ROUND_TO_INT(rect.origin.y),
@@ -262,17 +280,15 @@ QSize QFontMetrics::size(int, const QString &qstring, int len, int tabstops,
}
NSLog (@"string = %@\n", QSTRING_TO_NSSTRING(qstring));
- int w, h;
NSString *string;
if (len != -1)
string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
else
string = QSTRING_TO_NSSTRING (qstring);
- w = (int)[data->font widthOfString: string];
- h = height();
+ NSRect rect = [data->info rectForString: string];
- return QSize (w,h);
+ return QSize (ROUND_TO_INT(rect.size.width),ROUND_TO_INT(rect.size.height));
}
@@ -293,7 +309,7 @@ int QFontMetrics::leftBearing(QChar) const
QFontMetrics &QFontMetrics::operator=(const QFontMetrics &assignFrom)
{
_free();
- _initializeWithData(assignFrom.data);
+ _initializeWithFont(assignFrom.data->font);
return *this;
}
diff --git a/WebCore/kwq/KWQPaintDevice.mm b/WebCore/kwq/KWQPaintDevice.mm
index fa67428..925ffbc 100644
--- a/WebCore/kwq/KWQPaintDevice.mm
+++ b/WebCore/kwq/KWQPaintDevice.mm
@@ -30,7 +30,7 @@
QPaintDevice::~QPaintDevice()
{
- _logNeverImplemented();
+ // This space intentionally left blank.
}
diff --git a/WebCore/kwq/KWQScrollView.mm b/WebCore/kwq/KWQScrollView.mm
index 5a9eb99..4b7725c 100644
--- a/WebCore/kwq/KWQScrollView.mm
+++ b/WebCore/kwq/KWQScrollView.mm
@@ -177,7 +177,6 @@ void QScrollView::removeChild(QWidget* child)
void QScrollView::resizeContents(int w, int h)
{
- NSLog (@"KWQScrollView resizing to w %d, h %d");
resize (w, h);
}
diff --git a/WebCore/kwq/KWQView.mm b/WebCore/kwq/KWQView.mm
index f4aa132..da4d60b 100644
--- a/WebCore/kwq/KWQView.mm
+++ b/WebCore/kwq/KWQView.mm
@@ -103,14 +103,31 @@
return self;
}
+#ifdef DELAY_LAYOUT
+- delayLayout: sender
+{
+ [NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(delayLayout:) object: self];
+ NSLog (@"KWQHTMLView: delayLayout called");
+ [self setNeedsLayout: YES];
+ [self setNeedsDisplay: YES];
+}
+
-(void)notificationReceived:(NSNotification *)notification
{
if ([[notification name] rangeOfString: @"uri-fin-"].location == 0){
NSLog (@"KWQHTMLView: Received notification, %@", [notification name]);
+ [self performSelector:@selector(delayLayout:) withObject:self afterDelay:(NSTimeInterval)0.5];
+ }
+}
+#else
+-(void)notificationReceived:(NSNotification *)notification
+{
+ if ([[notification name] rangeOfString: @"uri-fin-"].location == 0){
[self setNeedsLayout: YES];
[self setNeedsDisplay: YES];
}
}
+#endif
- (void)layout
{
@@ -189,6 +206,21 @@
part->openURL (url);
}
+- (void)mouseUp: (NSEvent *)event
+{
+ NSLog (@"mouseUp %@", event);
+}
+
+- (void)mouseDown: (NSEvent *)event
+{
+ NSLog (@"mouseDown %@", event);
+}
+
+- (void)mouseDragged: (NSEvent *)event
+{
+ NSLog (@"mouseDragged %@", event);
+}
+
@end
diff --git a/WebCore/src/kwq/KWQFontMetrics.mm b/WebCore/src/kwq/KWQFontMetrics.mm
index dea661f..6e00264 100644
--- a/WebCore/src/kwq/KWQFontMetrics.mm
+++ b/WebCore/src/kwq/KWQFontMetrics.mm
@@ -28,51 +28,124 @@
#include <qfontmetrics.h>
#define ROUND_TO_INT(f) ((int)rint((f)))
+const float LargeNumberForText = 1.0e7;
+
+ at interface WSMetricsInfo : NSObject
+{
+ NSFont *font;
+ NSTextContainer *textContainer;
+ NSLayoutManager *layoutManager;
+ NSDictionary *attributes;
+ NSMutableDictionary *boundingRectCache;
+}
+
++ (WSMetricsInfo *)getMetricsForFont: (NSFont *)aFont;
++ (void)setMetric: (WSMetricsInfo *)info forFont: (NSFont *)aFont;
+- initWithFont: (NSFont *)aFont;
+- (NSRect)rectForString:(NSString *)string;
+
+ at end
+
+static NSMutableDictionary *metricsCache = nil;
+
+ at implementation WSMetricsInfo
++ (WSMetricsInfo *)getMetricsForFont: (NSFont *)aFont
+{
+ WSMetricsInfo *info = (WSMetricsInfo *)[metricsCache objectForKey: aFont];
+ if (info == nil){
+ info = [[WSMetricsInfo alloc] initWithFont: aFont];
+ [WSMetricsInfo setMetric: info forFont: aFont];
+ [info release];
+ }
+ return info;
+}
++ (void)setMetric: (WSMetricsInfo *)info forFont: (NSFont *)aFont
+{
+ if (metricsCache == nil)
+ metricsCache = [[NSMutableDictionary alloc] init];
+ [metricsCache setObject: info forKey: aFont];
+}
+
+- initWithFont: (NSFont *)aFont
+{
+ [super init];
+ font = [aFont retain];
+ textContainer = [[NSTextContainer alloc] initWithContainerSize:NSMakeSize(LargeNumberForText, LargeNumberForText)];
+ layoutManager = [[NSLayoutManager alloc] init];
+ [layoutManager addTextContainer: textContainer];
+ attributes = [[NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil] retain];
+ return self;
+}
+
+- (NSRect)rectForString:(NSString *)string
+ {
+ NSValue *cachedValue;
+ NSTextStorage *textStorage;
+
+ if (boundingRectCache == nil){
+ boundingRectCache = [[NSMutableDictionary alloc] init];
+ }
+
+ cachedValue = [boundingRectCache objectForKey: string];
+ if (cachedValue != nil){
+ return [cachedValue rectValue];
+ }
+
+ if (textContainer == nil){
+ textContainer = [[NSTextContainer alloc] initWithContainerSize:NSMakeSize(LargeNumberForText, LargeNumberForText)];
+ layoutManager = [[NSLayoutManager alloc] init];
+ [layoutManager addTextContainer: textContainer];
+ attributes = [[NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil] retain];
+ }
+
+ textStorage = [[NSTextStorage alloc] initWithString:string attributes: attributes];
+ [textStorage addLayoutManager: layoutManager];
+
+ unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
+ NSRect glyphRect = [layoutManager boundingRectForGlyphRange: NSMakeRange (0, numberOfGlyphs) inTextContainer: textContainer];
+
+ [textStorage removeLayoutManager: layoutManager];
+ [textStorage release];
+
+ [boundingRectCache setObject: [NSValue valueWithRect: glyphRect] forKey: string];
+
+ return glyphRect;
+}
+
+- (void)dealloc
+{
+ [textContainer release];
+ [layoutManager release];
+ [attributes release];
+}
+
+ at end
+
struct QFontMetricsPrivate {
friend class QFontMetrics;
public:
- QFontMetricsPrivate() :
- font(0),
- textContainer(0),
- layoutManager(0),
- attributes(0),
- boundingRectCache(0),
- lastLength(0)
+ QFontMetricsPrivate(NSFont *aFont)
{
+ font = [aFont retain];
+ info = [[WSMetricsInfo getMetricsForFont: aFont] retain];
}
~QFontMetricsPrivate()
{
+ if (info){
+ [info release];
+ info = 0;
+ }
if (font){
[font release];
font = 0;
}
- if (textContainer){
- [textContainer release];
- textContainer = 0;
- }
- if (layoutManager){
- [layoutManager release];
- layoutManager = 0;
- }
- if (attributes){
- [attributes release];
- attributes = 0;
- }
- if (boundingRectCache){
- [boundingRectCache release];
- boundingRectCache = 0;
- }
}
private:
+ WSMetricsInfo *info;
NSFont *font;
- NSTextContainer *textContainer;
- NSLayoutManager *layoutManager;
- NSDictionary *attributes;
- NSMutableDictionary *boundingRectCache;
- int lastLength;
};
@@ -84,39 +157,23 @@ QFontMetrics::QFontMetrics()
QFontMetrics::QFontMetrics(const QFont &withFont)
{
- _initializeWithData (0);
- data->font = [withFont.font retain];
+ _initializeWithFont (withFont.font);
}
QFontMetrics::QFontMetrics(const QFontMetrics ©From)
{
- _initializeWithData(copyFrom.data);
+ _initializeWithFont(copyFrom.data->font);
}
void QFontMetrics::_initialize()
{
- _initializeWithData (0);
+ _initializeWithFont (0);
}
-void QFontMetrics::_initializeWithData (QFontMetricsPrivate *withData)
+void QFontMetrics::_initializeWithFont (NSFont *font)
{
- data = new QFontMetricsPrivate();
-
- if (withData == 0){
- data->font = [QFont::defaultNSFont() retain];
- data->textContainer = 0;
- data->layoutManager = 0;
- data->attributes = 0;
- data->boundingRectCache = 0;
- }
- else {
- data->font = [withData->font retain];
- data->textContainer = [withData->textContainer retain];
- data->layoutManager = [withData->layoutManager retain];
- data->attributes = [withData->attributes retain];
- data->boundingRectCache = [withData->boundingRectCache retain];
- }
+ data = new QFontMetricsPrivate(font);
}
void QFontMetrics::_free(){
@@ -147,51 +204,12 @@ int QFontMetrics::height() const
return ROUND_TO_INT([data->font defaultLineHeightForFont]);
}
-const float LargeNumberForText = 1.0e7;
-
-NSRect QFontMetrics::_rectOfString(NSString *string) const
- {
- NSValue *cachedValue;
- NSTextStorage *textStorage;
-
- if (data->boundingRectCache == nil){
- data->boundingRectCache = [[NSMutableDictionary alloc] init];
- }
-
- cachedValue = [data->boundingRectCache objectForKey: string];
- if (cachedValue != nil){
- return [cachedValue rectValue];
- }
-
- if (data->textContainer == nil){
- data->textContainer = [[NSTextContainer alloc] initWithContainerSize:NSMakeSize(LargeNumberForText, LargeNumberForText)];
- data->layoutManager = [[NSLayoutManager alloc] init];
- [data->layoutManager addTextContainer: data->textContainer];
- data->attributes = [[NSDictionary dictionaryWithObjectsAndKeys:data->font, NSFontAttributeName, nil] retain];
- }
-
- textStorage = [[NSTextStorage alloc] initWithString:string attributes: data->attributes];
- [textStorage addLayoutManager: data->layoutManager];
-
- unsigned numberOfGlyphs = [data->layoutManager numberOfGlyphs];
- NSRect glyphRect = [data->layoutManager boundingRectForGlyphRange: NSMakeRange (0, numberOfGlyphs) inTextContainer: data->textContainer];
-
- [textStorage removeLayoutManager: data->layoutManager];
- [textStorage release];
-
- [data->boundingRectCache setObject: [NSValue valueWithRect: glyphRect] forKey: string];
-
- return glyphRect;
-}
-
-
-
int QFontMetrics::width(QChar qc) const
{
ushort c = qc.unicode();
NSString *string = [NSString stringWithCharacters: (const unichar *)&c length: 1];
- int stringWidth = ROUND_TO_INT(_rectOfString(string).size.width);
+ int stringWidth = ROUND_TO_INT([data->info rectForString: string].size.width);
return stringWidth;
}
@@ -200,7 +218,7 @@ int QFontMetrics::width(QChar qc) const
int QFontMetrics::width(char c) const
{
NSString *string = [NSString stringWithCString: &c length: 1];
- int stringWidth = ROUND_TO_INT(_rectOfString(string).size.width);
+ int stringWidth = ROUND_TO_INT([data->info rectForString: string].size.width);
return stringWidth;
}
@@ -213,7 +231,7 @@ int QFontMetrics::width(const QString &qstring, int len) const
string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
else
string = QSTRING_TO_NSSTRING (qstring);
- int stringWidth = ROUND_TO_INT(_rectOfString(string).size.width);
+ int stringWidth = ROUND_TO_INT([data->info rectForString: string].size.width);
return stringWidth;
}
@@ -232,7 +250,7 @@ QRect QFontMetrics::boundingRect(const QString &qstring, int len) const
string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
else
string = QSTRING_TO_NSSTRING (qstring);
- NSRect rect = _rectOfString(string);
+ NSRect rect = [data->info rectForString: string];
return QRect(ROUND_TO_INT(rect.origin.x),
ROUND_TO_INT(rect.origin.y),
@@ -245,7 +263,7 @@ QRect QFontMetrics::boundingRect(QChar qc) const
{
ushort c = qc.unicode();
NSString *string = [NSString stringWithCharacters: (const unichar *)&c length: 1];
- NSRect rect = _rectOfString(string);
+ NSRect rect = [data->info rectForString: string];
return QRect(ROUND_TO_INT(rect.origin.x),
ROUND_TO_INT(rect.origin.y),
@@ -262,17 +280,15 @@ QSize QFontMetrics::size(int, const QString &qstring, int len, int tabstops,
}
NSLog (@"string = %@\n", QSTRING_TO_NSSTRING(qstring));
- int w, h;
NSString *string;
if (len != -1)
string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
else
string = QSTRING_TO_NSSTRING (qstring);
- w = (int)[data->font widthOfString: string];
- h = height();
+ NSRect rect = [data->info rectForString: string];
- return QSize (w,h);
+ return QSize (ROUND_TO_INT(rect.size.width),ROUND_TO_INT(rect.size.height));
}
@@ -293,7 +309,7 @@ int QFontMetrics::leftBearing(QChar) const
QFontMetrics &QFontMetrics::operator=(const QFontMetrics &assignFrom)
{
_free();
- _initializeWithData(assignFrom.data);
+ _initializeWithFont(assignFrom.data->font);
return *this;
}
diff --git a/WebCore/src/kwq/KWQPaintDevice.mm b/WebCore/src/kwq/KWQPaintDevice.mm
index fa67428..925ffbc 100644
--- a/WebCore/src/kwq/KWQPaintDevice.mm
+++ b/WebCore/src/kwq/KWQPaintDevice.mm
@@ -30,7 +30,7 @@
QPaintDevice::~QPaintDevice()
{
- _logNeverImplemented();
+ // This space intentionally left blank.
}
diff --git a/WebCore/src/kwq/KWQScrollView.mm b/WebCore/src/kwq/KWQScrollView.mm
index 5a9eb99..4b7725c 100644
--- a/WebCore/src/kwq/KWQScrollView.mm
+++ b/WebCore/src/kwq/KWQScrollView.mm
@@ -177,7 +177,6 @@ void QScrollView::removeChild(QWidget* child)
void QScrollView::resizeContents(int w, int h)
{
- NSLog (@"KWQScrollView resizing to w %d, h %d");
resize (w, h);
}
diff --git a/WebCore/src/kwq/KWQView.mm b/WebCore/src/kwq/KWQView.mm
index f4aa132..da4d60b 100644
--- a/WebCore/src/kwq/KWQView.mm
+++ b/WebCore/src/kwq/KWQView.mm
@@ -103,14 +103,31 @@
return self;
}
+#ifdef DELAY_LAYOUT
+- delayLayout: sender
+{
+ [NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(delayLayout:) object: self];
+ NSLog (@"KWQHTMLView: delayLayout called");
+ [self setNeedsLayout: YES];
+ [self setNeedsDisplay: YES];
+}
+
-(void)notificationReceived:(NSNotification *)notification
{
if ([[notification name] rangeOfString: @"uri-fin-"].location == 0){
NSLog (@"KWQHTMLView: Received notification, %@", [notification name]);
+ [self performSelector:@selector(delayLayout:) withObject:self afterDelay:(NSTimeInterval)0.5];
+ }
+}
+#else
+-(void)notificationReceived:(NSNotification *)notification
+{
+ if ([[notification name] rangeOfString: @"uri-fin-"].location == 0){
[self setNeedsLayout: YES];
[self setNeedsDisplay: YES];
}
}
+#endif
- (void)layout
{
@@ -189,6 +206,21 @@
part->openURL (url);
}
+- (void)mouseUp: (NSEvent *)event
+{
+ NSLog (@"mouseUp %@", event);
+}
+
+- (void)mouseDown: (NSEvent *)event
+{
+ NSLog (@"mouseDown %@", event);
+}
+
+- (void)mouseDragged: (NSEvent *)event
+{
+ NSLog (@"mouseDragged %@", event);
+}
+
@end
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list