[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 07:20:05 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 77a985bc5720d9e54290791b3b309d875911541d
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Jan 17 02:25:09 2003 +0000
Fixed 3148932. Account for zero width characters
in <pre> fixed-width optimization.
Reviewed by hyatt.
* khtml/rendering/render_text.cpp:
(RenderText::widthFromCache):
Reviewed by Richard (written by Mike S.) 'Clean' implementations of these
functions that were too similar to the Qt implementations.
* kwq/KWQString.mm:
(QString::left):
(QString::right):
(QString::mid):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3344 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 31595ec..cf55fd8 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,21 @@
+2003-01-16 Richard Williamson <rjw at apple.com>
+
+ Fixed 3148932. Account for zero width characters
+ in <pre> fixed-width optimization.
+
+ Reviewed by hyatt.
+
+ * khtml/rendering/render_text.cpp:
+ (RenderText::widthFromCache):
+
+ Reviewed by Richard (written by Mike S.) 'Clean' implementations of these
+ functions that were too similar to the Qt implementations.
+
+ * kwq/KWQString.mm:
+ (QString::left):
+ (QString::right):
+ (QString::mid):
+
2003-01-16 Maciej Stachowiak <mjs at apple.com>
Reviewed by Darin.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 31595ec..cf55fd8 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,21 @@
+2003-01-16 Richard Williamson <rjw at apple.com>
+
+ Fixed 3148932. Account for zero width characters
+ in <pre> fixed-width optimization.
+
+ Reviewed by hyatt.
+
+ * khtml/rendering/render_text.cpp:
+ (RenderText::widthFromCache):
+
+ Reviewed by Richard (written by Mike S.) 'Clean' implementations of these
+ functions that were too similar to the Qt implementations.
+
+ * kwq/KWQString.mm:
+ (QString::left):
+ (QString::right):
+ (QString::mid):
+
2003-01-16 Maciej Stachowiak <mjs at apple.com>
Reviewed by Darin.
diff --git a/WebCore/khtml/rendering/render_text.cpp b/WebCore/khtml/rendering/render_text.cpp
index f9f5613..12d3310 100644
--- a/WebCore/khtml/rendering/render_text.cpp
+++ b/WebCore/khtml/rendering/render_text.cpp
@@ -815,11 +815,28 @@ void RenderText::cacheWidths()
inline int RenderText::widthFromCache(const Font *f, int start, int len) const
{
if (m_monospaceCharacterWidth != 0){
- return len * m_monospaceCharacterWidth;
+ int i, w = 0;
+ for (i = start; i < start+len; i++){
+ int dir = str->s[i].direction();
+ if (dir != QChar::DirNSM && dir != QChar::DirBN)
+ w += m_monospaceCharacterWidth;
+ }
+ return w;
}
return f->width(str->s, str->l, start, len);
}
+#ifdef XXX
+inline int RenderText::widthFromCache(const Font *f, int start, int len) const
+{
+ if (m_monospaceCharacterWidth != 0){
+ return len * m_monospaceCharacterWidth;
+ }
+
+ return f->width(str->s, str->l, start, len);
+}
+#endif
+
#endif
void RenderText::trimmedMinMaxWidth(short& beginMinW, bool& beginWS,
diff --git a/WebCore/kwq/KWQString.mm b/WebCore/kwq/KWQString.mm
index 051fadd..ecc6c2e 100644
--- a/WebCore/kwq/KWQString.mm
+++ b/WebCore/kwq/KWQString.mm
@@ -1699,66 +1699,45 @@ QString QString::arg(double replacement, int width) const
}
QString QString::left(uint len) const
-{
- if ( isEmpty() ) {
- return QString();
- } else if ( len == 0 ) { // ## just for 1.x compat:
- return fromLatin1("");
- } else if ( len > dataHandle[0]->_length ) {
- return *this;
- } else {
- QString s( unicode(), len );
- return s;
- }
-}
+{ return mid(0, len); }
+
QString QString::right(uint len) const
-{
- if ( isEmpty() ) {
- return QString();
- } else if ( len == 0 ) { // ## just for 1.x compat:
- return fromLatin1("");
- } else {
- uint l = dataHandle[0]->_length;
- if ( len > l )
- len = l;
- QString s( unicode()+(l-len), len );
- return s;
- }
-}
+{ return mid(length() - len, len); }
+
-QString QString::mid(uint index, uint len) const
+QString QString::mid(uint start, uint len) const
{
- uint slen = dataHandle[0]->_length;
- if ( isEmpty() || index >= slen ) {
- return QString();
- } else if ( len == 0 ) { // ## just for 1.x compat:
- return fromLatin1("");
- } else {
- if (dataHandle[0]->_isAsciiValid){
- if ( len > slen-index )
- len = slen - index;
- if ( index == 0 && len == dataHandle[0]->_length )
- return *this;
- register const char *p = ascii()+index;
- QString s( p, len );
- return s;
- }
- else if (dataHandle[0]->_isUnicodeValid){
- if ( len > slen-index )
- len = slen - index;
- if ( index == 0 && len == dataHandle[0]->_length )
- return *this;
- register const QChar *p = unicode()+index;
- QString s( p, len );
- return s;
- }
- else
- FATAL("invalid character cache");
+ if( dataHandle && *dataHandle)
+ {
+ KWQStringData &data = **dataHandle;
+
+ if (data._length == 0)
+ return QString();
+
+ // clip length
+ if( len > data._length - start )
+ len = data._length - start;
+
+ if ( index == 0 && len == data._length )
+ return *this;
+
+ ASSERT( start+len<=data._length ); // range check
+
+ // ascii case
+ if( data._isAsciiValid && data._ascii )
+ return QString( &(data._ascii[start]) , len);
+
+ // unicode case
+ else if( data._isUnicodeValid && data._unicode )
+ return QString( &(data._unicode[start]), len );
}
- return QString(); // Never reached, shut the compiler up.
+
+ // degenerate case
+ return null;
}
+
QString QString::copy() const
{
// does not need to be a deep copy
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list