propogate opacity & visibility changes down the view heirarchy...

git-svn-id: svn://10.0.0.236/trunk@26100 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
peterl%netscape.com 1999-04-02 22:57:25 +00:00
parent 0de132bc42
commit b9d594a564
2 changed files with 68 additions and 16 deletions

View File

@ -3760,6 +3760,39 @@ nsCSSFrameConstructor::ContentRemoved(nsIPresContext* aPresContext,
return rv;
}
static void
UpdateViewsForTree(nsIFrame* aFrame, nsIViewManager* aViewManager)
{
nsIView* view;
aFrame->GetView(&view);
if (view) {
const nsStyleColor* color;
const nsStyleDisplay* disp;
aFrame->GetStyleData(eStyleStruct_Color, (const nsStyleStruct*&) color);
aFrame->GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&) disp);
view->SetVisibility(NS_STYLE_VISIBILITY_HIDDEN == disp->mVisible ?nsViewVisibility_kHide:nsViewVisibility_kShow);
aViewManager->SetViewOpacity(view, color->mOpacity);
}
// now do children fo frame
PRInt32 listIndex = 0;
nsIAtom* childList = nsnull;
do {
nsIFrame* child = nsnull;
aFrame->FirstChild(childList, &child);
while (child) {
UpdateViewsForTree(child, aViewManager);
child->GetNextSibling(&child);
}
NS_IF_RELEASE(childList);
aFrame->GetAdditionalChildListName(listIndex++, &childList);
} while (childList);
NS_IF_RELEASE(childList);
}
static void
ApplyRenderingChangeToTree(nsIPresContext* aPresContext,
@ -3795,14 +3828,7 @@ ApplyRenderingChangeToTree(nsIPresContext* aPresContext,
if (nsnull == viewManager) {
view->GetViewManager(viewManager);
}
const nsStyleColor* color;
const nsStyleDisplay* disp;
aFrame->GetStyleData(eStyleStruct_Color, (const nsStyleStruct*&) color);
aFrame->GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&) disp);
view->SetVisibility(NS_STYLE_VISIBILITY_HIDDEN == disp->mVisible ?nsViewVisibility_kHide:nsViewVisibility_kShow);
viewManager->SetViewOpacity(view, color->mOpacity);
UpdateViewsForTree(aFrame, viewManager);
viewManager->UpdateView(view, r, NS_VMREFRESH_NO_SYNC);
aFrame->GetNextInFlow(&aFrame);

View File

@ -3760,6 +3760,39 @@ nsCSSFrameConstructor::ContentRemoved(nsIPresContext* aPresContext,
return rv;
}
static void
UpdateViewsForTree(nsIFrame* aFrame, nsIViewManager* aViewManager)
{
nsIView* view;
aFrame->GetView(&view);
if (view) {
const nsStyleColor* color;
const nsStyleDisplay* disp;
aFrame->GetStyleData(eStyleStruct_Color, (const nsStyleStruct*&) color);
aFrame->GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&) disp);
view->SetVisibility(NS_STYLE_VISIBILITY_HIDDEN == disp->mVisible ?nsViewVisibility_kHide:nsViewVisibility_kShow);
aViewManager->SetViewOpacity(view, color->mOpacity);
}
// now do children fo frame
PRInt32 listIndex = 0;
nsIAtom* childList = nsnull;
do {
nsIFrame* child = nsnull;
aFrame->FirstChild(childList, &child);
while (child) {
UpdateViewsForTree(child, aViewManager);
child->GetNextSibling(&child);
}
NS_IF_RELEASE(childList);
aFrame->GetAdditionalChildListName(listIndex++, &childList);
} while (childList);
NS_IF_RELEASE(childList);
}
static void
ApplyRenderingChangeToTree(nsIPresContext* aPresContext,
@ -3795,14 +3828,7 @@ ApplyRenderingChangeToTree(nsIPresContext* aPresContext,
if (nsnull == viewManager) {
view->GetViewManager(viewManager);
}
const nsStyleColor* color;
const nsStyleDisplay* disp;
aFrame->GetStyleData(eStyleStruct_Color, (const nsStyleStruct*&) color);
aFrame->GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&) disp);
view->SetVisibility(NS_STYLE_VISIBILITY_HIDDEN == disp->mVisible ?nsViewVisibility_kHide:nsViewVisibility_kShow);
viewManager->SetViewOpacity(view, color->mOpacity);
UpdateViewsForTree(aFrame, viewManager);
viewManager->UpdateView(view, r, NS_VMREFRESH_NO_SYNC);
aFrame->GetNextInFlow(&aFrame);