Attachment #555962: Some extra cleanup for bug #613149

View | Details | Raw Unified | Return to bug 613149
Collapse All | Expand All

(-)a/layout/base/nsBidiPresUtils.cpp (-7 / +6 lines)
Line     Link Here 
 Lines 267-306   struct BidiParagraphData { Link Here 
267
  nsIFrame* FrameAt(PRInt32 aIndex){ return mLogicalFrames[aIndex]; }
267
  nsIFrame* FrameAt(PRInt32 aIndex){ return mLogicalFrames[aIndex]; }
268
268
269
  nsLineBox* GetLineForFrameAt(PRInt32 aIndex){ return mLinePerFrame[aIndex]; }
269
  nsLineBox* GetLineForFrameAt(PRInt32 aIndex){ return mLinePerFrame[aIndex]; }
270
270
271
  void AppendUnichar(PRUnichar aCh){ mBuffer.Append(aCh); }
271
  void AppendUnichar(PRUnichar aCh){ mBuffer.Append(aCh); }
272
272
273
  void AppendString(const nsDependentSubstring& aString){ mBuffer.Append(aString); }
273
  void AppendString(const nsDependentSubstring& aString){ mBuffer.Append(aString); }
274
274
275
  void AppendUnicharFrame(nsIFrame* aFrame, PRUnichar aCh)
275
  void AppendControlCharFrame(PRUnichar aCh)
276
  {
276
  {
277
    mLogicalFrames.AppendElement(aFrame);
277
    mLogicalFrames.AppendElement(NS_BIDI_CONTROL_FRAME);
278
    mLinePerFrame.AppendElement((nsLineBox*)nsnull);
278
    mLinePerFrame.AppendElement((nsLineBox*)nsnull);
279
    AppendUnichar(aCh);
279
    AppendUnichar(aCh);
280
  }
280
  }
281
281
282
  void PushBidiControl(PRUnichar aCh)
282
  void PushBidiControl(PRUnichar aCh)
283
  {
283
  {
284
    AppendUnicharFrame(NS_BIDI_CONTROL_FRAME, aCh);
284
    AppendControlCharFrame(aCh);
285
    mEmbeddingStack.AppendElement(aCh);
285
    mEmbeddingStack.AppendElement(aCh);
286
  }
286
  }
287
287
288
  void PopBidiControl()
288
  void PopBidiControl()
289
  {
289
  {
290
    AppendUnicharFrame(NS_BIDI_CONTROL_FRAME, kPDF);
290
    AppendControlCharFrame(kPDF);
291
    NS_ASSERTION(mEmbeddingStack.Length(), "embedding/override underflow");
291
    NS_ASSERTION(mEmbeddingStack.Length(), "embedding/override underflow");
292
    mEmbeddingStack.TruncateLength(mEmbeddingStack.Length() - 1);
292
    mEmbeddingStack.TruncateLength(mEmbeddingStack.Length() - 1);
293
  }
293
  }
294
294
295
  void ClearBidiControls()
295
  void ClearBidiControls()
296
  {
296
  {
297
    for (PRUint32 i = 0; i < mEmbeddingStack.Length(); ++i) {
297
    for (PRUint32 i = 0; i < mEmbeddingStack.Length(); ++i) {
298
      AppendUnicharFrame(NS_BIDI_CONTROL_FRAME, kPDF);
298
      AppendControlCharFrame(kPDF);
299
    }
299
    }
300
  }
300
  }
301
301
302
  nsBidiLevel NextOddLevel(nsBidiLevel aLevel)
302
  nsBidiLevel NextOddLevel(nsBidiLevel aLevel)
303
  {
303
  {
304
    return (aLevel + 1) | 1;
304
    return (aLevel + 1) | 1;
305
  }
305
  }
306
306
 Lines 1093-1110   nsBidiPresUtils::TraverseFrames(nsBlockF Link Here 
1093
        // last frame of an element specifying embedding or override
1093
        // last frame of an element specifying embedding or override
1094
        aBpd->PopBidiControl();
1094
        aBpd->PopBidiControl();
1095
      }
1095
      }
1096
      if (aContainingParagraph) {
1096
      if (aContainingParagraph) {
1097
        ResolveParagraph(aBlockFrame, aBpd);
1097
        ResolveParagraph(aBlockFrame, aBpd);
1098
1098
1099
        // Treat an element with unicode-bidi: isolate as a neutral character
1099
        // Treat an element with unicode-bidi: isolate as a neutral character
1100
        // within its containing paragraph
1100
        // within its containing paragraph
1101
        aContainingParagraph->AppendUnicharFrame(NS_BIDI_CONTROL_FRAME,
1101
        aContainingParagraph->AppendControlCharFrame(kObjectSubstitute);
1102
                                                kObjectSubstitute);
1103
      }
1102
      }
1104
    }
1103
    }
1105
    childFrame = nextSibling;
1104
    childFrame = nextSibling;
1106
  } while (childFrame);
1105
  } while (childFrame);
1107
}
1106
}
1108
1107
1109
void
1108
void
1110
nsBidiPresUtils::ResolveParagraphWithinBlock(nsBlockFrame* aBlockFrame,
1109
nsBidiPresUtils::ResolveParagraphWithinBlock(nsBlockFrame* aBlockFrame,

Return to bug 613149