We have a fair number of files that have a particular stale version of the MPL boilerplate. (It was probably originally correct, and then the official boilerplate changed, and the stale MPL boilerplate continued to propagate via copypasting from neighboring files into newly-added files.) This patch updates this stale MPL text (and *only* the MPL text) to the latest version, which can be found at https://www.mozilla.org/en-US/MPL/headers/ and https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line MozReview-Commit-ID: 8WeBb8b0uRo
91 lines
2.6 KiB
C++
91 lines
2.6 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/* rendering object for CSS "display: ruby-text" */
|
|
|
|
#include "nsRubyTextFrame.h"
|
|
|
|
#include "mozilla/WritingModes.h"
|
|
#include "nsLineLayout.h"
|
|
#include "nsPresContext.h"
|
|
#include "nsStyleContext.h"
|
|
|
|
using namespace mozilla;
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
// Frame class boilerplate
|
|
// =======================
|
|
|
|
NS_QUERYFRAME_HEAD(nsRubyTextFrame)
|
|
NS_QUERYFRAME_ENTRY(nsRubyTextFrame)
|
|
NS_QUERYFRAME_TAIL_INHERITING(nsRubyContentFrame)
|
|
|
|
NS_IMPL_FRAMEARENA_HELPERS(nsRubyTextFrame)
|
|
|
|
nsContainerFrame*
|
|
NS_NewRubyTextFrame(nsIPresShell* aPresShell,
|
|
nsStyleContext* aContext)
|
|
{
|
|
return new (aPresShell) nsRubyTextFrame(aContext);
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
// nsRubyTextFrame Method Implementations
|
|
// ======================================
|
|
|
|
/* virtual */ bool
|
|
nsRubyTextFrame::CanContinueTextRun() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
#ifdef DEBUG_FRAME_DUMP
|
|
nsresult
|
|
nsRubyTextFrame::GetFrameName(nsAString& aResult) const
|
|
{
|
|
return MakeFrameName(NS_LITERAL_STRING("RubyText"), aResult);
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
/* virtual */ void
|
|
nsRubyTextFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
|
const nsDisplayListSet& aLists)
|
|
{
|
|
if (IsAutoHidden()) {
|
|
return;
|
|
}
|
|
|
|
nsRubyContentFrame::BuildDisplayList(aBuilder, aLists);
|
|
}
|
|
|
|
/* virtual */ void
|
|
nsRubyTextFrame::Reflow(nsPresContext* aPresContext,
|
|
ReflowOutput& aDesiredSize,
|
|
const ReflowInput& aReflowInput,
|
|
nsReflowStatus& aStatus)
|
|
{
|
|
// Even if we want to hide this frame, we have to reflow it first.
|
|
// If we leave it dirty, changes to its content will never be
|
|
// propagated to the ancestors, then it won't be displayed even if
|
|
// the content is no longer the same, until next reflow triggered by
|
|
// some other change. In general, we always reflow all the frames we
|
|
// created. There might be other problems if we don't do that.
|
|
nsRubyContentFrame::Reflow(aPresContext, aDesiredSize, aReflowInput, aStatus);
|
|
|
|
if (IsAutoHidden()) {
|
|
// Reset the ISize. The BSize is not changed so that it won't
|
|
// affect vertical positioning in unexpected way.
|
|
WritingMode lineWM = aReflowInput.mLineLayout->GetWritingMode();
|
|
aDesiredSize.ISize(lineWM) = 0;
|
|
aDesiredSize.SetOverflowAreasToDesiredBounds();
|
|
}
|
|
}
|