Changeset 10614 in webkit
- Timestamp:
- Sep 24, 2005, 4:45:21 AM (21 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 17 edited
-
LayoutTests/fast/forms/006-expected.checksum (modified) (1 diff)
-
LayoutTests/fast/forms/006-expected.png (modified) ( previous)
-
LayoutTests/fast/forms/007-expected.checksum (modified) (1 diff)
-
LayoutTests/fast/forms/007-expected.png (modified) ( previous)
-
LayoutTests/fast/text/international/bidi-override-expected.checksum (added)
-
LayoutTests/fast/text/international/bidi-override-expected.png (added)
-
LayoutTests/fast/text/international/bidi-override-expected.txt (added)
-
LayoutTests/fast/text/international/bidi-override.html (added)
-
LayoutTests/fast/text/whitespace/013-expected.checksum (modified) (1 diff)
-
LayoutTests/fast/text/whitespace/013-expected.png (modified) ( previous)
-
WebCore/ChangeLog-2005-12-19 (modified) (1 diff)
-
WebCore/khtml/rendering/bidi.cpp (modified) (3 diffs)
-
WebCore/khtml/rendering/bidi.h (modified) (2 diffs)
-
WebCore/khtml/rendering/render_box.cpp (modified) (1 diff)
-
WebCore/khtml/rendering/render_box.h (modified) (1 diff)
-
WebCore/khtml/rendering/render_object.h (modified) (1 diff)
-
WebCore/khtml/rendering/render_text.cpp (modified) (7 diffs)
-
WebCore/khtml/rendering/render_text.h (modified) (2 diffs)
-
WebCore/kwq/KWQPainter.mm (modified) (2 diffs)
-
WebCore/kwq/WebCoreTextRenderer.h (modified) (1 diff)
-
WebCore/kwq/WebCoreTextRendererFactory.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/fast/forms/006-expected.checksum
r10427 r10614 1 17d2d405204ad61b8ee3d57e1129eb97 1 eed2e2ca78f5d8bd2421ab33189c931b -
trunk/LayoutTests/fast/forms/007-expected.checksum
r10427 r10614 1 a5779621a5bdced6dd78283625fd712a 1 8c52d7300b4c1c23a6f12736837ee3b6 -
trunk/LayoutTests/fast/text/whitespace/013-expected.checksum
r10382 r10614 1 d25cc6dee9e550df61acc194775a758c 1 62e7e4ad1d9fd21b1e5d5ec5905df9a5 -
trunk/WebCore/ChangeLog-2005-12-19
r10613 r10614 1 2005-09-24 Mitz Pettel <opendarwin.org@mitzpettel.com> 2 3 Reviewed by Dave. 4 Landed by Darin. 5 6 - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=4862 7 Incorrect layout of bidi overrides 8 9 Test cases added: 10 * layout-tests/fast/text/international/bidi-override.html: Added. 11 * layout-tests/fast/text/international/bidi-override-expected.checksum: Added. 12 * layout-tests/fast/text/international/bidi-override-expected.png: Added. 13 * layout-tests/fast/text/international/bidi-override-expected.txt: Added. 14 15 * khtml/rendering/bidi.h: Include an "override direction" flag in BidiRun. 16 * khtml/rendering/bidi.cpp: 17 (khtml::RenderBlock::computeVerticalPositionsForLine): Pass in "override direction" parameter. 18 (khtml::RenderBlock::bidiReorderLine): Set direction based on override. 19 (khtml::RenderBlock::layoutInlineChildren): Pass in "override direction" parameter. 20 21 * khtml/rendering/render_object.h: Update position function to take an "override direction" parameter. 22 * khtml/rendering/render_box.h: Ditto. 23 * khtml/rendering/render_box.cpp: (RenderBox::position): Ditto. 24 25 * khtml/rendering/render_text.h: Add an m_dirOverride field to InlineTextBox. 26 * khtml/rendering/render_text.cpp: 27 (InlineTextBox::paint): Pass true for override to drawText if m_dirOverride is set. 28 (InlineTextBox::paintSelection): Ditto. 29 (InlineTextBox::paintMarkedTextBackground): Ditto. 30 (RenderText::position): Set up m_dirOverride in the InlineTextBox based on the override parameter. 31 32 * kwq/WebCoreTextRenderer.h: Replace visuallyOrdered flag with a directionalOverride flag. 33 * kwq/WebCoreTextRendererFactory.mm: (WebCoreInitializeEmptyTextStyle): Ditto. 34 * kwq/KWQPainter.mm: 35 (QPainter::drawText): Ditto. 36 (QPainter::drawHighlightForText): Ditto. 37 38 - updated pixel test results for unrelated tests with results that recently changed 39 40 * layout-tests/fast/forms/006-expected.checksum: 41 * layout-tests/fast/forms/006-expected.png: 42 * layout-tests/fast/forms/007-expected.checksum: 43 * layout-tests/fast/forms/007-expected.png: 44 * layout-tests/fast/text/whitespace/013-expected.checksum: 45 * layout-tests/fast/text/whitespace/013-expected.png: 46 1 47 2005-09-24 Justin Garcia <justin.garcia@apple.com> 2 48 -
trunk/WebCore/khtml/rendering/bidi.cpp
r10458 r10614 880 880 // Position is used to properly position both replaced elements and 881 881 // to update the static normal flow x/y of positioned elements. 882 r->obj->position(r->box, r->start, r->stop - r->start, r->level%2 );882 r->obj->position(r->box, r->start, r->stop - r->start, r->level%2, r->override); 883 883 } 884 884 } … … 927 927 } else { 928 928 dirCurrent = bidi.current.direction(); 929 if (bidi.context->override && dirCurrent != QChar::DirRLE && dirCurrent != QChar::DirLRE && dirCurrent != QChar::DirRLO && dirCurrent != QChar::DirLRO && dirCurrent != QChar::DirPDF) 930 dirCurrent = bidi.context->dir; 929 931 } 930 932 … … 1484 1486 BidiContext *startEmbed; 1485 1487 if( style()->direction() == LTR ) { 1486 startEmbed = new BidiContext( 0, QChar::DirL );1488 startEmbed = new BidiContext( 0, QChar::DirL, NULL, style()->unicodeBidi() == Override ); 1487 1489 bidi.status.eor = QChar::DirL; 1488 1490 } else { 1489 startEmbed = new BidiContext( 1, QChar::DirR );1491 startEmbed = new BidiContext( 1, QChar::DirR, NULL, style()->unicodeBidi() == Override ); 1490 1492 bidi.status.eor = QChar::DirR; 1491 1493 } -
trunk/WebCore/khtml/rendering/bidi.h
r5119 r10614 55 55 struct BidiRun { 56 56 BidiRun(int _start, int _stop, RenderObject *_obj, BidiContext *context, QChar::Direction dir) 57 : start( _start ), stop( _stop ), obj( _obj ), box(0), nextRun(0)57 : start( _start ), stop( _stop ), obj( _obj ), box(0), override(context->override), nextRun(0) 58 58 { 59 59 if(dir == QChar::DirON) dir = context->dir; … … 94 94 // explicit + implicit levels here 95 95 uchar level; 96 bool override : 1; 96 97 97 98 bool compact : 1; -
trunk/WebCore/khtml/rendering/render_box.cpp
r10566 r10614 684 684 } 685 685 686 void RenderBox::position(InlineBox* box, int from, int len, bool reverse )686 void RenderBox::position(InlineBox* box, int from, int len, bool reverse, bool override) 687 687 { 688 688 if (isPositioned()) { -
trunk/WebCore/khtml/rendering/render_box.h
r10566 r10614 90 90 void calcHorizontalMargins(const Length& ml, const Length& mr, int cw); 91 91 92 virtual void position(InlineBox* box, int from, int len, bool reverse );92 virtual void position(InlineBox* box, int from, int len, bool reverse, bool override); 93 93 94 94 virtual void dirtyLineBoxes(bool fullLayout, bool isRootLineBox=false); -
trunk/WebCore/khtml/rendering/render_object.h
r10566 r10614 743 743 744 744 // positioning of inline children (bidi) 745 virtual void position(InlineBox*, int, int, bool ) {}745 virtual void position(InlineBox*, int, int, bool, bool) {} 746 746 747 747 // Applied as a "slop" to dirty rect checks during the outline painting phase's dirty-rect checks. -
trunk/WebCore/khtml/rendering/render_text.cpp
r10556 r10614 385 385 font->drawText(i.p, m_x + tx, m_y + ty + m_baseline, textObject()->tabWidth(), textPos(), 386 386 textObject()->string()->s, textObject()->string()->l, m_start, endPoint, 387 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, styleToUse->visuallyOrdered());387 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, m_dirOverride || styleToUse->visuallyOrdered()); 388 388 } else { 389 389 int sPos, ePos; … … 394 394 font->drawText(i.p, m_x + tx, m_y + ty + m_baseline, textObject()->tabWidth(), textPos(), 395 395 textObject()->string()->s, textObject()->string()->l, m_start, m_len, 396 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, styleToUse->visuallyOrdered());396 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, m_dirOverride || styleToUse->visuallyOrdered()); 397 397 } else { 398 398 if (sPos - 1 >= 0) { 399 399 font->drawText(i.p, m_x + tx, m_y + ty + m_baseline, textObject()->tabWidth(), textPos(), 400 400 textObject()->string()->s, textObject()->string()->l, m_start, m_len, 401 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, styleToUse->visuallyOrdered(), 0, sPos);401 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, m_dirOverride || styleToUse->visuallyOrdered(), 0, sPos); 402 402 } 403 403 if (ePos < m_start + m_len) { 404 404 font->drawText(i.p, m_x + tx, m_y + ty + m_baseline, textObject()->tabWidth(), textPos(), 405 405 textObject()->string()->s, textObject()->string()->l, m_start, m_len, 406 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, styleToUse->visuallyOrdered(), ePos, -1);406 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, m_dirOverride || styleToUse->visuallyOrdered(), ePos, -1); 407 407 } 408 408 } … … 421 421 font->drawText(i.p, m_x + tx, m_y + ty + m_baseline, textObject()->tabWidth(), textPos(), 422 422 textObject()->string()->s, textObject()->string()->l, m_start, m_len, 423 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, styleToUse->visuallyOrdered(), sPos, ePos);423 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, m_dirOverride || styleToUse->visuallyOrdered(), sPos, ePos); 424 424 if (selectionTextShadow) 425 425 i.p->clearShadow(); … … 528 528 f->drawHighlightForText(p, m_x + tx, y + ty, h, textObject()->tabWidth(), textPos(), 529 529 textObject()->str->s, textObject()->str->l, m_start, m_len, 530 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, style->visuallyOrdered(), sPos, ePos, c);530 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, m_dirOverride || style->visuallyOrdered(), sPos, ePos, c); 531 531 p->restore(); 532 532 } … … 551 551 int h = r->selectionHeight(); 552 552 f->drawHighlightForText(p, m_x + tx, y + ty, h, textObject()->tabWidth(), textPos(), textObject()->str->s, textObject()->str->l, m_start, m_len, 553 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, style->visuallyOrdered(), sPos, ePos, c);553 m_toAdd, m_reversed ? QPainter::RTL : QPainter::LTR, m_dirOverride || style->visuallyOrdered(), sPos, ePos, c); 554 554 p->restore(); 555 555 } … … 1685 1685 } 1686 1686 1687 void RenderText::position(InlineBox* box, int from, int len, bool reverse )1687 void RenderText::position(InlineBox* box, int from, int len, bool reverse, bool override) 1688 1688 { 1689 1689 InlineTextBox *s = static_cast<InlineTextBox*>(box); … … 1708 1708 1709 1709 s->m_reversed = reverse; 1710 s->m_dirOverride = override || style()->visuallyOrdered(); 1710 1711 s->m_start = from; 1711 1712 s->m_len = len; -
trunk/WebCore/khtml/rendering/render_text.h
r10556 r10614 150 150 151 151 bool m_reversed : 1; 152 bool m_dirOverride : 1; 152 153 bool m_treatAsText : 1; // Whether or not to treat a <br> as text for the purposes of line height. 153 int m_toAdd : 1 4; // for justified text154 int m_toAdd : 13; // for justified text 154 155 155 156 private: … … 197 198 QChar *text() const { return str->s; } 198 199 unsigned int stringLength() const { return str->l; } // non virtual implementation of length() 199 virtual void position(InlineBox* box, int from, int len, bool reverse );200 virtual void position(InlineBox* box, int from, int len, bool reverse, bool override); 200 201 201 202 virtual unsigned int width(unsigned int from, unsigned int len, const Font *f, int xpos) const; -
trunk/WebCore/kwq/KWQPainter.mm
r10613 r10614 668 668 style.backgroundColor = backgroundColor.isValid() ? nsColor(backgroundColor) : nil; 669 669 style.rtl = d == RTL ? true : false; 670 style. visuallyOrdered= visuallyOrdered;670 style.directionalOverride = visuallyOrdered; 671 671 style.letterSpacing = letterSpacing; 672 672 style.wordSpacing = wordSpacing; … … 707 707 style.backgroundColor = backgroundColor.isValid() ? nsColor(backgroundColor) : nil; 708 708 style.rtl = d == RTL ? true : false; 709 style. visuallyOrdered= visuallyOrdered;709 style.directionalOverride = visuallyOrdered; 710 710 style.letterSpacing = letterSpacing; 711 711 style.wordSpacing = wordSpacing; -
trunk/WebCore/kwq/WebCoreTextRenderer.h
r9963 r10614 42 42 unsigned smallCaps : 1; 43 43 unsigned rtl : 1; 44 unsigned visuallyOrdered: 1;44 unsigned directionalOverride : 1; 45 45 unsigned applyRunRounding : 1; 46 46 unsigned applyWordRounding : 1; -
trunk/WebCore/kwq/WebCoreTextRendererFactory.mm
r9963 r10614 48 48 style->backgroundColor = nil; 49 49 style->rtl = false; 50 style-> visuallyOrdered= false;50 style->directionalOverride = false; 51 51 style->letterSpacing = 0; 52 52 style->wordSpacing = 0;
Note:
See TracChangeset
for help on using the changeset viewer.