Mark line after a preformatted newline as dirty during bidi resolution. Bug 1015128, r=mats
authorSimon Montagu <smontagu@smontagu.org>
Wed, 11 Jun 2014 08:57:25 -0700
changeset 209008 e5616a2e176c67c9d25e3ab854d1977541a3c397
parent 209007 7fc2e2faeaf0b3a3132e8d88408ee92fe5cc060b
child 209009 21a9c0fde1db619c8a9b9a3b0c4744eccf727c58
push id3857
push userraliiev@mozilla.com
push dateTue, 02 Sep 2014 16:39:23 +0000
treeherdermozilla-beta@5638b907b505 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmats
bugs1015128
milestone33.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Mark line after a preformatted newline as dirty during bidi resolution. Bug 1015128, r=mats
layout/base/nsBidiPresUtils.cpp
--- a/layout/base/nsBidiPresUtils.cpp
+++ b/layout/base/nsBidiPresUtils.cpp
@@ -1107,25 +1107,28 @@ nsBidiPresUtils::TraverseFrames(nsBlockF
                 nsTextFrame* textFrame = static_cast<nsTextFrame*>(frame);
                 textFrame->SetLength(endLine - start, nullptr);
 
                 if (!next) {
                   // If the frame has no next in flow, create one.
                   CreateContinuation(frame, &next, true);
                   createdContinuation = true;
                 }
+                // Mark the line before the newline as dirty.
                 aBpd->GetLineForFrameAt(aBpd->FrameCount() - 1)->MarkDirty();
               }
               ResolveParagraphWithinBlock(aBlockFrame, aBpd);
 
               if (!nextSibling && !createdContinuation) {
                 break;
               } else if (next) {
                 frame = next;
                 aBpd->AppendFrame(frame, aLineIter);
+                // Mark the line after the newline as dirty.
+                aBpd->GetLineForFrameAt(aBpd->FrameCount() - 1)->MarkDirty();
               }
 
               /*
                * If we have already overshot the saved next-sibling while
                * scanning the frame's continuations, advance it.
                */
               if (frame && frame == nextSibling) {
                 nextSibling = frame->GetNextSibling();