author | Xidorn Quan <quanxunzhen@gmail.com> |
Fri, 04 Dec 2015 16:28:34 +1100 | |
changeset 275599 | d3ab483587f5d49cff06a2691d7e46735594ee67 |
parent 275598 | 368534fd8b50fad6073614bd544525289f5547b4 |
child 275600 | cb2462db0b8653b4a42131a4d2a8ea92c534d4fb |
push id | 68891 |
push user | xquan@mozilla.com |
push date | Fri, 04 Dec 2015 05:28:36 +0000 |
treeherder | mozilla-inbound@d3ab483587f5 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jfkthame |
bugs | 1229739 |
milestone | 45.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
|
layout/generic/nsTextFrame.cpp | file | annotate | diff | comparison | revisions | |
layout/generic/nsTextFrame.h | file | annotate | diff | comparison | revisions |
--- a/layout/generic/nsTextFrame.cpp +++ b/layout/generic/nsTextFrame.cpp @@ -6213,27 +6213,28 @@ nsTextFrame::PaintTextWithSelection(gfxC DestroySelectionDetails(details); return true; } void nsTextFrame::DrawEmphasisMarks(gfxContext* aContext, WritingMode aWM, const gfxPoint& aTextBaselinePt, uint32_t aOffset, uint32_t aLength, + const nscolor* aDecorationOverrideColor, PropertyProvider& aProvider) { auto info = static_cast<const EmphasisMarkInfo*>( Properties().Get(EmphasisMarkProperty())); if (!info) { MOZ_ASSERT(!StyleText()->HasTextEmphasis()); return; } - nscolor color = nsLayoutUtils:: - GetColor(this, eCSSProperty_text_emphasis_color); + nscolor color = aDecorationOverrideColor ? *aDecorationOverrideColor : + nsLayoutUtils::GetColor(this, eCSSProperty_text_emphasis_color); aContext->SetColor(Color::FromABGR(color)); gfxPoint pt(aTextBaselinePt); if (!aWM.IsVertical()) { pt.y += info->baselineOffset; } else { if (aWM.IsVerticalRL()) { pt.x -= info->baselineOffset; } else { @@ -6742,17 +6743,18 @@ nsTextFrame::DrawTextRunAndDecorations( } // CSS 2.1 mandates that text be painted after over/underlines, and *then* // line-throughs DrawTextRun(aCtx, aTextBaselinePt, aOffset, aLength, aProvider, aTextColor, aAdvanceWidth, aDrawSoftHyphen, aContextPaint, aCallbacks); // Emphasis marks - DrawEmphasisMarks(aCtx, wm, aTextBaselinePt, aOffset, aLength, aProvider); + DrawEmphasisMarks(aCtx, wm, aTextBaselinePt, aOffset, aLength, + aDecorationOverrideColor, aProvider); // Line-throughs for (uint32_t i = aDecorations.mStrikes.Length(); i-- > 0; ) { const LineDecoration& dec = aDecorations.mStrikes[i]; if (dec.mStyle == NS_STYLE_TEXT_DECORATION_STYLE_NONE) { continue; }
--- a/layout/generic/nsTextFrame.h +++ b/layout/generic/nsTextFrame.h @@ -441,16 +441,17 @@ public: SelectionDetails* aDetails, SelectionType aSelectionType, DrawPathCallbacks* aCallbacks); void DrawEmphasisMarks(gfxContext* aContext, mozilla::WritingMode aWM, const gfxPoint& aTextBaselinePt, uint32_t aOffset, uint32_t aLength, + const nscolor* aDecorationOverrideColor, PropertyProvider& aProvider); virtual nscolor GetCaretColorAt(int32_t aOffset) override; int16_t GetSelectionStatus(int16_t* aSelectionFlags); int32_t GetContentOffset() const { return mContentOffset; } int32_t GetContentLength() const