If the frame has visible content that extends outside its content area,
then the view needs to be marked as having transparent content
This commit is contained in:
troy%netscape.com 1999-10-13 01:02:53 +00:00
Родитель bf942c2800
Коммит e592be8776
4 изменённых файлов: 38 добавлений и 0 удалений

Просмотреть файл

@ -7141,6 +7141,17 @@ SyncAndInvalidateView(nsIView* aView, nsIFrame* aFrame,
} }
} }
// If the frame has visible content that overflows the content area, then we
// need the view marked as having transparent content
if (NS_STYLE_OVERFLOW_VISIBLE == disp->mOverflow) {
nsFrameState frameState;
aFrame->GetFrameState(&frameState);
if (frameState & NS_FRAME_OUTSIDE_CHILDREN) {
viewHasTransparentContent = PR_TRUE;
}
}
if (viewIsVisible) { if (viewIsVisible) {
aViewManager->SetViewContentTransparency(aView, viewHasTransparentContent); aViewManager->SetViewContentTransparency(aView, viewHasTransparentContent);
aViewManager->SetViewVisibility(aView, nsViewVisibility_kShow); aViewManager->SetViewVisibility(aView, nsViewVisibility_kShow);

Просмотреть файл

@ -1292,6 +1292,14 @@ nsFrame::DidReflow(nsIPresContext& aPresContext,
} }
} }
// If we have visible content that overflows the content area, then we
// need the view marked as having transparent content
if (NS_STYLE_OVERFLOW_VISIBLE == display->mOverflow) {
if (mState & NS_FRAME_OUTSIDE_CHILDREN) {
viewHasTransparentContent = PR_TRUE;
}
}
// Make sure visibility is correct // Make sure visibility is correct
vm->SetViewVisibility(mView, viewIsVisible ? nsViewVisibility_kShow : vm->SetViewVisibility(mView, viewIsVisible ? nsViewVisibility_kShow :
nsViewVisibility_kHide); nsViewVisibility_kHide);

Просмотреть файл

@ -1292,6 +1292,14 @@ nsFrame::DidReflow(nsIPresContext& aPresContext,
} }
} }
// If we have visible content that overflows the content area, then we
// need the view marked as having transparent content
if (NS_STYLE_OVERFLOW_VISIBLE == display->mOverflow) {
if (mState & NS_FRAME_OUTSIDE_CHILDREN) {
viewHasTransparentContent = PR_TRUE;
}
}
// Make sure visibility is correct // Make sure visibility is correct
vm->SetViewVisibility(mView, viewIsVisible ? nsViewVisibility_kShow : vm->SetViewVisibility(mView, viewIsVisible ? nsViewVisibility_kShow :
nsViewVisibility_kHide); nsViewVisibility_kHide);

Просмотреть файл

@ -7141,6 +7141,17 @@ SyncAndInvalidateView(nsIView* aView, nsIFrame* aFrame,
} }
} }
// If the frame has visible content that overflows the content area, then we
// need the view marked as having transparent content
if (NS_STYLE_OVERFLOW_VISIBLE == disp->mOverflow) {
nsFrameState frameState;
aFrame->GetFrameState(&frameState);
if (frameState & NS_FRAME_OUTSIDE_CHILDREN) {
viewHasTransparentContent = PR_TRUE;
}
}
if (viewIsVisible) { if (viewIsVisible) {
aViewManager->SetViewContentTransparency(aView, viewHasTransparentContent); aViewManager->SetViewContentTransparency(aView, viewHasTransparentContent);
aViewManager->SetViewVisibility(aView, nsViewVisibility_kShow); aViewManager->SetViewVisibility(aView, nsViewVisibility_kShow);