зеркало из https://github.com/mozilla/pjs.git
Fix for 99198, ensure that stack doesn't stretch children explicitly position at left/top of (0,0), r=bryner, sr=waterson
This commit is contained in:
Родитель
acbcfb40c8
Коммит
f0fb3c199b
|
@ -171,7 +171,7 @@ nsStackLayout::GetAscent(nsIBox* aBox, nsBoxLayoutState& aState, nscoord& aAscen
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
PRBool
|
||||
nsStackLayout::AddOffset(nsBoxLayoutState& aState, nsIBox* aChild, nsSize& aSize)
|
||||
{
|
||||
nsSize offset(0,0);
|
||||
|
@ -187,7 +187,7 @@ nsStackLayout::AddOffset(nsBoxLayoutState& aState, nsIBox* aChild, nsSize& aSize
|
|||
// As an optimization, we cache the fact that we are not positioned to avoid
|
||||
// wasting time fetching attributes and checking style data.
|
||||
if (state & NS_STATE_STACK_NOT_POSITIONED)
|
||||
return NS_OK;
|
||||
return PR_FALSE;
|
||||
|
||||
PRBool offsetSpecified = PR_FALSE;
|
||||
frame->GetStyleData(eStyleStruct_Position,(const nsStyleStruct*&) pos);
|
||||
|
@ -239,7 +239,7 @@ nsStackLayout::AddOffset(nsBoxLayoutState& aState, nsIBox* aChild, nsSize& aSize
|
|||
frame->SetFrameState(state);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
return offsetSpecified;
|
||||
}
|
||||
|
||||
|
||||
|
@ -290,7 +290,7 @@ nsStackLayout::Layout(nsIBox* aBox, nsBoxLayoutState& aState)
|
|||
|
||||
// obtain our offset from the top left border of the stack's content box.
|
||||
nsSize offset(0,0);
|
||||
AddOffset(aState, child, offset);
|
||||
PRBool offsetSpecified = AddOffset(aState, child, offset);
|
||||
|
||||
// Correct the child's x/y position by adding in both the margins
|
||||
// and the left/top offset.
|
||||
|
@ -299,7 +299,7 @@ nsStackLayout::Layout(nsIBox* aBox, nsBoxLayoutState& aState)
|
|||
|
||||
// If we have an offset, we don't stretch the child. Just use
|
||||
// its preferred size.
|
||||
if (offset.width != 0 || offset.height != 0) {
|
||||
if (offsetSpecified) {
|
||||
nsSize pref(0,0);
|
||||
child->GetPrefSize(aState, pref);
|
||||
childRect.width = pref.width;
|
||||
|
|
|
@ -52,7 +52,7 @@ public:
|
|||
NS_IMETHOD GetAscent(nsIBox* aBox, nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent);
|
||||
|
||||
protected:
|
||||
nsresult AddOffset(nsBoxLayoutState& aState, nsIBox* aChild, nsSize& aSize);
|
||||
PRBool AddOffset(nsBoxLayoutState& aState, nsIBox* aChild, nsSize& aSize);
|
||||
|
||||
private:
|
||||
static nsIBoxLayout* gInstance;
|
||||
|
|
Загрузка…
Ссылка в новой задаче