本文整理汇总了C++中nsBoxLayoutState类的典型用法代码示例。如果您正苦于以下问题:C++ nsBoxLayoutState类的具体用法?C++ nsBoxLayoutState怎么用?C++ nsBoxLayoutState使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了nsBoxLayoutState类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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;
}
示例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;
}
示例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;
}
}
}
示例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;
}
示例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();
}
}
}
示例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;
}
示例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);
}
}
示例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);
}
示例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;
}
示例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);
}
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}