some fixes

This commit is contained in:
Nomango 2019-06-06 12:56:38 +08:00 committed by Nomango
parent 0742b0c02d
commit 5c1878bd46
3 changed files with 21 additions and 9 deletions

View File

@ -239,10 +239,8 @@ namespace kiwano
}
}
void Node::SetZOrder(int zorder)
void Node::Reorder()
{
z_order_ = zorder;
if (parent_)
{
NodePtr me = this;
@ -251,12 +249,12 @@ namespace kiwano
Node* sibling = parent_->children_.Last().Get();
if (sibling && sibling->GetZOrder() > zorder)
if (sibling && sibling->GetZOrder() > z_order_)
{
sibling = sibling->PrevItem().Get();
while (sibling)
{
if (sibling->GetZOrder() <= zorder)
if (sibling->GetZOrder() <= z_order_)
break;
sibling = sibling->PrevItem().Get();
}
@ -273,6 +271,15 @@ namespace kiwano
}
}
void Node::SetZOrder(int zorder)
{
if (z_order_ != zorder)
{
z_order_ = zorder;
Reorder();
}
}
void Node::SetOpacity(float opacity)
{
if (opacity_ == opacity)
@ -473,7 +480,7 @@ namespace kiwano
child->SetScene(this->scene_);
child->dirty_transform_ = true;
child->UpdateOpacity();
child->SetZOrder(child->GetZOrder());
child->Reorder();
}
}

View File

@ -405,6 +405,8 @@ namespace kiwano
void SetScene(Scene* scene);
void Reorder();
protected:
bool visible_;
bool hover_;

View File

@ -22,7 +22,9 @@
#include "../macros.h"
#include <functional>
#ifdef KGE_DEBUG
// #define KGE_DEBUG_ENABLE_LIST_CHECK
#ifdef KGE_DEBUG_ENABLE_LIST_CHECK
# define KGE_DEBUG_CHECK_LIST(list_ptr) list_ptr->Check()
#else
# define KGE_DEBUG_CHECK_LIST __noop
@ -167,7 +169,7 @@ namespace kiwano
void Remove(T const& child)
{
#ifdef KGE_DEBUG
#ifdef KGE_DEBUG_ENABLE_LIST_CHECK
T tmp = first_;
while (tmp != child)
{
@ -217,7 +219,7 @@ namespace kiwano
last_ = nullptr;
}
#ifdef KGE_DEBUG
#ifdef KGE_DEBUG_ENABLE_LIST_CHECK
private:
void Check()
@ -250,3 +252,4 @@ namespace kiwano
}
#undef KGE_DEBUG_CHECK_LIST
#undef KGE_DEBUG_ENABLE_LIST_CHECK