本文整理汇总了C++中nsBoxLayoutState类的典型用法代码示例。如果您正苦于以下问题:C++ nsBoxLayoutState类的具体用法?C++ nsBoxLayoutState怎么用?C++ nsBoxLayoutState使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了nsBoxLayoutState类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: while
NS_IMETHODIMP
nsDeckFrame::DoLayout(nsBoxLayoutState& aState)
{
// Make sure we tweak the state so it does not resize our children.
// We will do that.
uint32_t oldFlags = aState.LayoutFlags();
aState.SetLayoutFlags(NS_FRAME_NO_SIZE_VIEW | NS_FRAME_NO_VISIBILITY);
// do a normal layout
nsresult rv = nsBoxFrame::DoLayout(aState);
// run though each child. Hide all but the selected one
nsIFrame* box = nsBox::GetChildBox(this);
nscoord count = 0;
while (box)
{
// make collapsed children not show up
if (count != mIndex)
HideBox(box);
box = GetNextBox(box);
count++;
}
aState.SetLayoutFlags(oldFlags);
return rv;
}
开发者ID:Nazi-Nigger,项目名称:gecko-dev,代码行数:29,代码来源:nsDeckFrame.cpp
示例2: rect
nsresult
nsBox::SyncLayout(nsBoxLayoutState& aState)
{
/*
if (IsCollapsed()) {
CollapseChild(aState, this, true);
return NS_OK;
}
*/
if (GetStateBits() & NS_FRAME_IS_DIRTY)
Redraw(aState);
RemoveStateBits(NS_FRAME_HAS_DIRTY_CHILDREN | NS_FRAME_IS_DIRTY
| NS_FRAME_FIRST_REFLOW | NS_FRAME_IN_REFLOW);
nsPresContext* presContext = aState.PresContext();
uint32_t flags = 0;
GetLayoutFlags(flags);
uint32_t stateFlags = aState.LayoutFlags();
flags |= stateFlags;
nsRect visualOverflow;
if (ComputesOwnOverflowArea()) {
visualOverflow = GetVisualOverflowRect();
}
else {
nsRect rect(nsPoint(0, 0), GetSize());
nsOverflowAreas overflowAreas(rect, rect);
if (!DoesClipChildren() && !IsCollapsed()) {
// See if our child frames caused us to overflow after being laid
// out. If so, store the overflow area. This normally can't happen
// in XUL, but it can happen with the CSS 'outline' property and
// possibly with other exotic stuff (e.g. relatively positioned
// frames in HTML inside XUL).
nsLayoutUtils::UnionChildOverflow(this, overflowAreas);
}
FinishAndStoreOverflow(overflowAreas, GetSize());
visualOverflow = overflowAreas.VisualOverflow();
}
nsIView* view = GetView();
if (view) {
// Make sure the frame's view is properly sized and positioned and has
// things like opacity correct
nsContainerFrame::SyncFrameViewAfterReflow(presContext, this, view,
visualOverflow, flags);
}
return NS_OK;
}
开发者ID:Lynart,项目名称:mozilla-central,代码行数:57,代码来源:nsBox.cpp
示例3: GetTextSize
void
nsTextBoxFrame::CalcTextSize(nsBoxLayoutState& aBoxLayoutState)
{
if (mNeedsRecalc)
{
nsSize size;
nsPresContext* presContext = aBoxLayoutState.PresContext();
nsIRenderingContext* rendContext = aBoxLayoutState.GetRenderingContext();
if (rendContext) {
GetTextSize(presContext, *rendContext,
mTitle, size, mAscent);
mTextSize = size;
mNeedsRecalc = PR_FALSE;
}
}
}
开发者ID:lofter2011,项目名称:Icefox,代码行数:16,代码来源:nsTextBoxFrame.cpp
示例4: origin
NS_IMETHODIMP
nsTextBoxFrame::DoLayout(nsBoxLayoutState& aBoxLayoutState)
{
if (mNeedsReflowCallback) {
nsIReflowCallback* cb = new nsAsyncAccesskeyUpdate(this);
if (cb) {
PresContext()->PresShell()->PostReflowCallback(cb);
}
mNeedsReflowCallback = PR_FALSE;
}
mState |= NS_STATE_NEED_LAYOUT;
nsresult rv = nsLeafBoxFrame::DoLayout(aBoxLayoutState);
const nsStyleText* textStyle = GetStyleText();
if (textStyle->mTextShadow) {
nsPoint origin(0,0);
nsRect textRect = CalcTextRect(*aBoxLayoutState.GetRenderingContext(), origin);
nsRect overflowRect(nsLayoutUtils::GetTextShadowRectsUnion(textRect, this));
overflowRect.UnionRect(overflowRect, nsRect(nsPoint(0, 0), GetSize()));
FinishAndStoreOverflow(&overflowRect, GetSize());
}
return rv;
}
开发者ID:lofter2011,项目名称:Icefox,代码行数:25,代码来源:nsTextBoxFrame.cpp
示例5: while
/*
* Run down through our children dirtying them recursively.
*/
void
nsGridRowGroupLayout::DirtyRows(nsIBox* aBox, nsBoxLayoutState& aState)
{
if (aBox) {
// mark us dirty
// XXXldb We probably don't want to walk up the ancestor chain
// calling MarkIntrinsicWidthsDirty for every row group.
aState.PresShell()->FrameNeedsReflow(aBox, nsIPresShell::eTreeChange,
NS_FRAME_IS_DIRTY);
nsIBox* child = aBox->GetChildBox();
while(child) {
// walk into scrollframes
nsIBox* deepChild = nsGrid::GetScrolledBox(child);
// walk into other monuments
nsIGridPart* monument = nsGrid::GetPartFromBox(deepChild);
if (monument)
monument->DirtyRows(deepChild, aState);
child = child->GetNextBox();
}
}
}
开发者ID:lofter2011,项目名称:Icefox,代码行数:28,代码来源:nsGridRowGroupLayout.cpp
示例6: PostReflowCallback
NS_IMETHODIMP
nsListBoxBodyFrame::DoLayout(nsBoxLayoutState& aBoxLayoutState)
{
if (mScrolling)
aBoxLayoutState.SetPaintingDisabled(PR_TRUE);
nsresult rv = nsBoxFrame::DoLayout(aBoxLayoutState);
if (mScrolling)
aBoxLayoutState.SetPaintingDisabled(PR_FALSE);
// if we are scrolled and the row height changed
// make sure we are scrolled to a correct index.
if (mAdjustScroll)
PostReflowCallback();
return rv;
}
开发者ID:binoc-software,项目名称:mozilla-cvs,代码行数:18,代码来源:nsListBoxBodyFrame.cpp
示例7:
void
nsGridRowLeafLayout::DirtyRows(nsIBox* aBox, nsBoxLayoutState& aState)
{
if (aBox) {
// mark us dirty
// XXXldb We probably don't want to walk up the ancestor chain
// calling MarkIntrinsicWidthsDirty for every row.
aState.PresShell()->FrameNeedsReflow(aBox, nsIPresShell::eTreeChange,
NS_FRAME_IS_DIRTY);
}
}
开发者ID:Akin-Net,项目名称:mozilla-central,代码行数:11,代码来源:nsGridRowLeafLayout.cpp
示例8: rect
void
nsSplitterFrameInner::SetPreferredSize(nsBoxLayoutState& aState, nsIBox* aChildBox, nscoord aOnePixel, PRBool aIsHorizontal, nscoord* aSize)
{
//printf("current=%d, pref=%d", current/onePixel, pref/onePixel);
nscoord current = 0;
nsRect rect(aChildBox->GetRect());
if (aIsHorizontal)
current = rect.width;
else
current = rect.height;
nscoord pref = 0;
if (!aSize)
{
if (aIsHorizontal)
pref = rect.width;
else
pref = rect.height;
} else {
pref = *aSize;
}
nsMargin margin(0,0,0,0);
aChildBox->GetMargin(margin);
nsCOMPtr<nsIAtom> attribute;
if (aIsHorizontal) {
pref -= (margin.left + margin.right);
attribute = nsGkAtoms::width;
} else {
pref -= (margin.top + margin.bottom);
attribute = nsGkAtoms::height;
}
nsIContent* content = aChildBox->GetContent();
// set its preferred size.
nsAutoString prefValue;
prefValue.AppendInt(pref/aOnePixel);
if (content->AttrValueIs(kNameSpaceID_None, attribute,
prefValue, eCaseMatters))
return;
nsWeakFrame weakBox(aChildBox);
content->SetAttr(kNameSpaceID_None, attribute, prefValue, PR_TRUE);
ENSURE_TRUE(weakBox.IsAlive());
aState.PresShell()->FrameNeedsReflow(aChildBox, nsIPresShell::eStyleChange,
NS_FRAME_IS_DIRTY);
}
开发者ID:MozillaOnline,项目名称:gecko-dev,代码行数:53,代码来源:nsSplitterFrame.cpp
示例9: InvalidateFrameSubtree
nsresult
nsIFrame::Redraw(nsBoxLayoutState& aState)
{
if (aState.PaintingDisabled())
return NS_OK;
// nsStackLayout, at least, expects us to repaint descendants even
// if a damage rect is provided
InvalidateFrameSubtree();
return NS_OK;
}
开发者ID:afabbro,项目名称:gecko-dev,代码行数:12,代码来源:nsBox.cpp
示例10:
void
nsPopupSetFrame::RepositionPopup(nsPopupFrameList* aEntry, nsBoxLayoutState& aState)
{
// Sync up the view.
if (aEntry && aEntry->mElementContent) {
nsIFrame* frameToSyncTo = nsnull;
nsPresContext* presContext = aState.PresContext();
presContext->PresShell()->GetPrimaryFrameFor(aEntry->mElementContent,
&frameToSyncTo );
((nsMenuPopupFrame*)(aEntry->mPopupFrame))->SyncViewWithFrame(presContext,
aEntry->mPopupAnchor, aEntry->mPopupAlign, frameToSyncTo, aEntry->mXPos, aEntry->mYPos);
}
}
开发者ID:rn10950,项目名称:RetroZilla,代码行数:13,代码来源:nsPopupSetFrame.cpp
示例11: rect
NS_IMETHODIMP
nsListBoxBodyFrame::DoXULLayout(nsBoxLayoutState& aBoxLayoutState)
{
if (mScrolling)
aBoxLayoutState.SetPaintingDisabled(true);
nsresult rv = nsBoxFrame::DoXULLayout(aBoxLayoutState);
// determine the real height for the scrollable area from the total number
// of rows, since non-visible rows don't yet have frames
nsRect rect(nsPoint(0, 0), GetSize());
nsOverflowAreas overflow(rect, rect);
if (mLayoutManager) {
nsIFrame* childFrame = mFrames.FirstChild();
while (childFrame) {
ConsiderChildOverflow(overflow, childFrame);
childFrame = childFrame->GetNextSibling();
}
nsSize prefSize = mLayoutManager->GetXULPrefSize(this, aBoxLayoutState);
NS_FOR_FRAME_OVERFLOW_TYPES(otype) {
nsRect& o = overflow.Overflow(otype);
o.height = std::max(o.height, prefSize.height);
}
}
FinishAndStoreOverflow(overflow, GetSize());
if (mScrolling)
aBoxLayoutState.SetPaintingDisabled(false);
// if we are scrolled and the row height changed
// make sure we are scrolled to a correct index.
if (mAdjustScroll)
PostReflowCallback();
return rv;
}
开发者ID:mephisto41,项目名称:gecko-dev,代码行数:37,代码来源:nsListBoxBodyFrame.cpp
示例12: min
nsSize
nsBox::GetMinSize(nsBoxLayoutState& aState)
{
NS_ASSERTION(aState.GetRenderingContext(), "must have rendering context");
nsSize min(0,0);
DISPLAY_MIN_SIZE(this, min);
if (IsCollapsed(aState))
return min;
AddBorderAndPadding(min);
nsIBox::AddCSSMinSize(aState, this, min);
return min;
}
开发者ID:MozillaOnline,项目名称:gecko-dev,代码行数:15,代码来源:nsBox.cpp
示例13: maxSize
nsSize
nsBox::GetMaxSize(nsBoxLayoutState& aState)
{
NS_ASSERTION(aState.GetRenderingContext(), "must have rendering context");
nsSize maxSize(NS_INTRINSICSIZE, NS_INTRINSICSIZE);
DISPLAY_MAX_SIZE(this, maxSize);
if (IsCollapsed(aState))
return maxSize;
AddBorderAndPadding(maxSize);
nsIBox::AddCSSMaxSize(aState, this, maxSize);
return maxSize;
}
开发者ID:MozillaOnline,项目名称:gecko-dev,代码行数:15,代码来源:nsBox.cpp
示例14: min
nsSize
nsBox::GetXULMinSize(nsBoxLayoutState& aState)
{
NS_ASSERTION(aState.GetRenderingContext(), "must have rendering context");
nsSize min(0,0);
DISPLAY_MIN_SIZE(this, min);
if (IsXULCollapsed())
return min;
AddBorderAndPadding(min);
bool widthSet, heightSet;
nsIFrame::AddXULMinSize(aState, this, min, widthSet, heightSet);
return min;
}
开发者ID:brendandahl,项目名称:positron,代码行数:16,代码来源:nsBox.cpp
示例15: maxSize
nsSize
nsBox::GetXULMaxSize(nsBoxLayoutState& aState)
{
NS_ASSERTION(aState.GetRenderingContext(), "must have rendering context");
nsSize maxSize(NS_INTRINSICSIZE, NS_INTRINSICSIZE);
DISPLAY_MAX_SIZE(this, maxSize);
if (IsXULCollapsed())
return maxSize;
AddBorderAndPadding(maxSize);
bool widthSet, heightSet;
nsIFrame::AddXULMaxSize(this, maxSize, widthSet, heightSet);
return maxSize;
}
开发者ID:brendandahl,项目名称:positron,代码行数:16,代码来源:nsBox.cpp
示例16: damageRect
nsresult
nsIFrame::Redraw(nsBoxLayoutState& aState,
const nsRect* aDamageRect,
PRBool aImmediate)
{
if (aState.PaintingDisabled())
return NS_OK;
nsRect damageRect(0,0,0,0);
if (aDamageRect)
damageRect = *aDamageRect;
else
damageRect = GetOverflowRect();
InvalidateWithFlags(damageRect, aImmediate ? INVALIDATE_IMMEDIATE : 0);
return NS_OK;
}
开发者ID:MozillaOnline,项目名称:gecko-dev,代码行数:18,代码来源:nsBox.cpp
示例17: pref
nsSize
nsBox::GetPrefSize(nsBoxLayoutState& aState)
{
NS_ASSERTION(aState.GetRenderingContext(), "must have rendering context");
nsSize pref(0,0);
DISPLAY_PREF_SIZE(this, pref);
if (IsCollapsed(aState))
return pref;
AddBorderAndPadding(pref);
nsIBox::AddCSSPrefSize(aState, this, pref);
nsSize minSize = GetMinSize(aState);
nsSize maxSize = GetMaxSize(aState);
return BoundsCheck(minSize, pref, maxSize);
}
开发者ID:MozillaOnline,项目名称:gecko-dev,代码行数:18,代码来源:nsBox.cpp
示例18: pref
nsSize
nsBox::GetXULPrefSize(nsBoxLayoutState& aState)
{
NS_ASSERTION(aState.GetRenderingContext(), "must have rendering context");
nsSize pref(0,0);
DISPLAY_PREF_SIZE(this, pref);
if (IsXULCollapsed())
return pref;
AddBorderAndPadding(pref);
bool widthSet, heightSet;
nsIFrame::AddXULPrefSize(this, pref, widthSet, heightSet);
nsSize minSize = GetXULMinSize(aState);
nsSize maxSize = GetXULMaxSize(aState);
return BoundsCheck(minSize, pref, maxSize);
}
开发者ID:brendandahl,项目名称:positron,代码行数:19,代码来源:nsBox.cpp
示例19: margin
nscoord
nsListBoxBodyFrame::ComputeIntrinsicISize(nsBoxLayoutState& aBoxLayoutState)
{
if (mStringWidth != -1)
return mStringWidth;
nscoord largestWidth = 0;
int32_t index = 0;
nsCOMPtr<nsIDOMElement> firstRowEl;
GetItemAtIndex(index, getter_AddRefs(firstRowEl));
nsCOMPtr<nsIContent> firstRowContent(do_QueryInterface(firstRowEl));
if (firstRowContent) {
RefPtr<nsStyleContext> styleContext;
nsPresContext *presContext = aBoxLayoutState.PresContext();
styleContext = presContext->StyleSet()->
ResolveStyleFor(firstRowContent->AsElement(), nullptr,
ConsumeStyleBehavior::DontConsume,
LazyComputeBehavior::Allow);
nscoord width = 0;
nsMargin margin(0,0,0,0);
if (styleContext->StylePadding()->GetPadding(margin))
width += margin.LeftRight();
width += styleContext->StyleBorder()->GetComputedBorder().LeftRight();
if (styleContext->StyleMargin()->GetMargin(margin))
width += margin.LeftRight();
FlattenedChildIterator iter(mContent);
for (nsIContent* child = iter.GetNextChild(); child; child = iter.GetNextChild()) {
if (child->IsXULElement(nsGkAtoms::listitem)) {
nsRenderingContext* rendContext = aBoxLayoutState.GetRenderingContext();
if (rendContext) {
nsAutoString value;
uint32_t textCount = child->GetChildCount();
for (uint32_t j = 0; j < textCount; ++j) {
nsIContent* text = child->GetChildAt(j);
if (text && text->IsNodeOfType(nsINode::eTEXT)) {
text->AppendTextTo(value);
}
}
RefPtr<nsFontMetrics> fm =
nsLayoutUtils::GetFontMetricsForStyleContext(styleContext);
nscoord textWidth =
nsLayoutUtils::AppUnitWidthOfStringBidi(value, this, *fm,
*rendContext);
textWidth += width;
if (textWidth > largestWidth)
largestWidth = textWidth;
}
}
}
}
mStringWidth = largestWidth;
return mStringWidth;
}
开发者ID:mephisto41,项目名称:gecko-dev,代码行数:62,代码来源:nsListBoxBodyFrame.cpp
示例20: if
PRBool
nsIBox::AddCSSMinSize(nsBoxLayoutState& aState, nsIBox* aBox, nsSize& aSize)
{
PRBool widthSet = PR_FALSE;
PRBool heightSet = PR_FALSE;
PRBool canOverride = PR_TRUE;
// See if a native theme wants to supply a minimum size.
const nsStyleDisplay* display = aBox->GetStyleDisplay();
if (display->mAppearance) {
nsITheme *theme = aState.PresContext()->GetTheme();
if (theme && theme->ThemeSupportsWidget(aState.PresContext(), aBox, display->mAppearance)) {
nsIntSize size;
nsIRenderingContext* rendContext = aState.GetRenderingContext();
if (rendContext) {
theme->GetMinimumWidgetSize(rendContext, aBox,
display->mAppearance, &size, &canOverride);
if (size.width) {
aSize.width = aState.PresContext()->DevPixelsToAppUnits(size.width);
widthSet = PR_TRUE;
}
if (size.height) {
aSize.height = aState.PresContext()->DevPixelsToAppUnits(size.height);
heightSet = PR_TRUE;
}
}
}
}
// add in the css min, max, pref
const nsStylePosition* position = aBox->GetStylePosition();
// same for min size. Unfortunately min size is always set to 0. So for now
// we will assume 0 means not set.
if (position->mMinWidth.GetUnit() == eStyleUnit_Coord) {
nscoord min = position->mMinWidth.GetCoordValue();
if (min && (!widthSet || (min > aSize.width && canOverride))) {
aSize.width = min;
widthSet = PR_TRUE;
}
} else if (position->mMinWidth.GetUnit() == eStyleUnit_Percent) {
NS_ASSERTION(position->mMinWidth.GetPercentValue() == 0.0f,
"Non-zero percentage values not currently supported");
aSize.width = 0;
widthSet = PR_TRUE;
}
// XXX Handle eStyleUnit_Enumerated?
// (Handling the eStyleUnit_Enumerated types requires
// GetPrefSize/GetMinSize methods that don't consider
// (min-/max-/)(width/height) properties.
if (position->mMinHeight.GetUnit() == eStyleUnit_Coord) {
nscoord min = position->mMinHeight.GetCoordValue();
if (min && (!heightSet || (min > aSize.height && canOverride))) {
aSize.height = min;
heightSet = PR_TRUE;
}
} else if (position->mMinHeight.GetUnit() == eStyleUnit_Percent) {
NS_ASSERTION(position->mMinHeight.GetPercentValue() == 0.0f,
"Non-zero percentage values not currently supported");
aSize.height = 0;
heightSet = PR_TRUE;
}
nsIContent* content = aBox->GetContent();
if (content) {
nsAutoString value;
PRInt32 error;
content->GetAttr(kNameSpaceID_None, nsGkAtoms::minwidth, value);
if (!value.IsEmpty())
{
value.Trim("%");
nscoord val =
nsPresContext::CSSPixelsToAppUnits(value.ToInteger(&error));
if (val > aSize.width)
aSize.width = val;
widthSet = PR_TRUE;
}
content->GetAttr(kNameSpaceID_None, nsGkAtoms::minheight, value);
if (!value.IsEmpty())
{
value.Trim("%");
nscoord val =
nsPresContext::CSSPixelsToAppUnits(value.ToInteger(&error));
if (val > aSize.height)
aSize.height = val;
heightSet = PR_TRUE;
}
}
return (widthSet && heightSet);
}
开发者ID:MozillaOnline,项目名称:gecko-dev,代码行数:98,代码来源:nsBox.cpp
注:本文中的nsBoxLayoutState类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论