Added Layer::Push/PopState() and moved their implementation from ServerWindow.cpp. We definitely need more encapsulation

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13043 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stefano Ceccherini
2005-06-10 15:28:34 +00:00
parent b00025db9c
commit e1bc5f2def
3 changed files with 67 additions and 50 deletions
+2 -14
View File
@@ -697,11 +697,8 @@ ServerWindow::DispatchMessage(int32 code, LinkMsgReader &link)
case AS_LAYER_PUSH_STATE:
{
DTRACE(("ServerWindow %s: Message AS_LAYER_PUSH_STATE: Layer: %s\n",fName, fCurrentLayer->fName->String()));
// TODO: refactor, put this in Layer
LayerData *ld = new LayerData();
ld->prevState = fCurrentLayer->fLayerData;
fCurrentLayer->fLayerData = ld;
fCurrentLayer->PushState();
fCurrentLayer->RebuildFullRegion();
break;
@@ -709,17 +706,8 @@ ServerWindow::DispatchMessage(int32 code, LinkMsgReader &link)
case AS_LAYER_POP_STATE:
{
DTRACE(("ServerWindow %s: Message AS_LAYER_POP_STATE: Layer: %s\n",fName, fCurrentLayer->fName->String()));
if (!(fCurrentLayer->fLayerData->prevState))
{
DTRACE(("WARNING: SW(%s): User called BView(%s)::PopState(), but there is NO state on stack!\n", fName, fCurrentLayer->fName->String()));
break;
}
// TODO: refactor, put this in Layer
LayerData *ld = fCurrentLayer->fLayerData;
fCurrentLayer->fLayerData = fCurrentLayer->fLayerData->prevState;
ld->prevState = NULL;
delete ld;
fCurrentLayer->PopState();
fCurrentLayer->RebuildFullRegion();
break;