* added initialization in contructor to (0.0, 0.0) for _boundsLeftTop member.

* modified Bounds() to use that member.
* some changes into RemoveChild()
* added a debugging method: void PrintTree()


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4690 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Adi Oanca
2003-09-15 19:11:52 +00:00
parent 4a60209dc7
commit ffb9ea55f5
+66 -7
View File
@@ -51,7 +51,9 @@ Layer::Layer(BRect frame, const char *name, int32 token, int32 resize,
if(frame.IsValid()) if(frame.IsValid())
_frame = frame; _frame = frame;
else else
_frame.Set(0, 0, 5, 5); _frame.Set(0.0f, 0.0f, 5.0f, 5.0f);
_boundsLeftTop.Set( 0.0f, 0.0f );
_name = new BString(name); _name = new BString(name);
// Layer does not start out as a part of the tree // Layer does not start out as a part of the tree
@@ -118,7 +120,7 @@ Layer::~Layer(void)
void Layer::AddChild(Layer *layer, Layer *before, bool rebuild) void Layer::AddChild(Layer *layer, Layer *before, bool rebuild)
{ {
// TODO: Add before support // TODO: Add before support
printf("Layer::AddChild lacks before support\n"); //printf("Layer::AddChild lacks before support\n");
if(layer->_parent!=NULL) if(layer->_parent!=NULL)
{ {
@@ -169,13 +171,11 @@ printf("Layer::AddChild lacks before support\n");
*/ */
void Layer::RemoveChild(Layer *layer, bool rebuild) void Layer::RemoveChild(Layer *layer, bool rebuild)
{ {
if(layer->_parent==NULL) if(layer->_parent == NULL){
{
printf("ERROR: RemoveChild(): Layer doesn't have a _parent\n"); printf("ERROR: RemoveChild(): Layer doesn't have a _parent\n");
return; return;
} }
if(layer->_parent!=this) if(layer->_parent != this){
{
printf("ERROR: RemoveChild(): Layer is not a child of this layer\n"); printf("ERROR: RemoveChild(): Layer is not a child of this layer\n");
return; return;
} }
@@ -184,6 +184,15 @@ void Layer::RemoveChild(Layer *layer, bool rebuild)
{ {
BRegion reg(ConvertToParent(_visible)); BRegion reg(ConvertToParent(_visible));
layer->_parent->_visible->Include(&reg); layer->_parent->_visible->Include(&reg);
//TODO: have a REVIEW of this code!!!!!!!!!!! the above 2 line are NOT good!
/*
* in _visible we should add layer->_visible if layer is not hidden
* in _invalid we should add layer->_visible if layer is not hidden
* this is OK, Because, for the moment we include only what we need.
Later, RebuildRegions will not include layer->_frame into calculations
because layer was removed from the tree. (deleted - better said :-)
*/
} }
// Take care of _parent // Take care of _parent
@@ -200,6 +209,7 @@ void Layer::RemoveChild(Layer *layer, bool rebuild)
layer->_lowersibling->_uppersibling = layer->_uppersibling; layer->_lowersibling->_uppersibling = layer->_uppersibling;
layer->_uppersibling = NULL; layer->_uppersibling = NULL;
layer->_lowersibling = NULL; layer->_lowersibling = NULL;
if(rebuild) if(rebuild)
RebuildRegions(true); RebuildRegions(true);
} }
@@ -271,7 +281,7 @@ Layer *Layer::GetChildAt(BPoint pt, bool recursive)
*/ */
BRect Layer::Bounds(void) BRect Layer::Bounds(void)
{ {
return _frame.OffsetToCopy(0,0); return _frame.OffsetToCopy( _boundsLeftTop );
} }
/*! /*!
@@ -817,6 +827,49 @@ void Layer::PrintNode(void)
printf("Visible Areas: NULL\n"); printf("Visible Areas: NULL\n");
} }
//! Prints the tree structure starting from this layer
void Layer::PrintTree(){
int32 spaces = 2;
Layer *c = _topchild; //c = short for: current
printf( "'%s' - token: %ld\n", _name->String(), _view_token );
if( c != NULL )
while( true ){
// action block
{
for( int i = 0; i < spaces; i++)
printf(" ");
printf( "'%s' - token: %ld\n", c->_name->String(), c->_view_token );
}
// go deep
if( c->_topchild ){
c = c->_topchild;
spaces += 2;
}
// go right or up
else
// go right
if( c->_lowersibling ){
c = c->_lowersibling;
}
// go up
else{
while( !c->_parent->_lowersibling && c->_parent != this ){
c = c->_parent;
spaces -= 2;
}
// that enough! We've reached this view.
if( c->_parent == this )
break;
c = c->_parent->_lowersibling;
spaces -= 2;
}
}
}
/*! /*!
\brief Converts the rectangle to the layer's parent coordinates \brief Converts the rectangle to the layer's parent coordinates
\param the rectangle to convert \param the rectangle to convert
@@ -972,3 +1025,9 @@ void Layer::MakeBottomChild(void)
_parent->_bottomchild=this; _parent->_bottomchild=this;
} }
/*
@log
* added initialization in contructor to (0.0, 0.0) for _boundsLeftTop member.
* modified Bounds() to use that member.
* some changes into RemoveChild()
*/