make ListView::setGlobalZOrder() work (#17098)

* make ListView::setGlobalZOrder() work

* revert modification of UIButton

* reset background color

* change global z order to test
This commit is contained in:
minggo 2017-01-04 11:06:44 +08:00 committed by GitHub
parent b3279bafa7
commit 79126ea72a
8 changed files with 31 additions and 2 deletions

View File

@ -100,9 +100,8 @@ void ProtectedNode::addProtectedChild(Node *child, int zOrder, int tag)
this->insertProtectedChild(child, zOrder);
child->setTag(tag);
child->setGlobalZOrder(_globalZOrder);
child->setParent(this);
child->updateOrderOfArrival();
if( _running )
@ -467,4 +466,11 @@ void ProtectedNode::setCameraMask(unsigned short mask, bool applyChildren)
}
void ProtectedNode::setGlobalZOrder(float globalZOrder)
{
Node::setGlobalZOrder(globalZOrder);
for (auto &child : _protectedChildren)
child->setGlobalZOrder(globalZOrder);
}
NS_CC_END

View File

@ -181,6 +181,7 @@ public:
virtual void disableCascadeColor() override;
virtual void disableCascadeOpacity()override;
virtual void setCameraMask(unsigned short mask, bool applyChildren = true) override;
virtual void setGlobalZOrder(float globalZOrder) override;
CC_CONSTRUCTOR_ACCESS:
ProtectedNode();
virtual ~ProtectedNode();

View File

@ -126,6 +126,18 @@ void Layout::onExit()
}
}
void Layout::setGlobalZOrder(float globalZOrder)
{
// _protectedChildren's global z order is set in ProtectedNode::setGlobalZOrder()
Widget::setGlobalZOrder(globalZOrder);
if (_clippingStencil)
_clippingStencil->setGlobalZOrder(globalZOrder);
for (auto &child : _children)
child->setGlobalZOrder(globalZOrder);
}
Layout* Layout::create()
{
Layout* layout = new (std::nothrow) Layout();
@ -166,6 +178,7 @@ void Layout::addChild(Node *child, int zOrder, int tag)
if (dynamic_cast<Widget*>(child)) {
supplyTheLayoutParameterLackToChild(static_cast<Widget*>(child));
}
child->setGlobalZOrder(_globalZOrder);
Widget::addChild(child, zOrder, tag);
_doLayoutDirty = true;
}
@ -175,6 +188,7 @@ void Layout::addChild(Node* child, int zOrder, const std::string &name)
if (dynamic_cast<Widget*>(child)) {
supplyTheLayoutParameterLackToChild(static_cast<Widget*>(child));
}
child->setGlobalZOrder(_globalZOrder);
Widget::addChild(child, zOrder, name);
_doLayoutDirty = true;
}
@ -389,6 +403,7 @@ void Layout::setClippingEnabled(bool able)
if (able)
{
_clippingStencil = DrawNode::create();
_clippingStencil->setGlobalZOrder(_globalZOrder);
if (_running)
{
_clippingStencil->onEnter();

View File

@ -414,6 +414,8 @@ public:
*/
virtual void onExit() override;
virtual void setGlobalZOrder(float globalZOrder) override;
/**
* If a layout is loop focused which means that the focus movement will be inside the layout
*@param loop pass true to let the focus movement loop inside the layout

View File

@ -257,11 +257,13 @@ void ScrollView::addChild(Node * child, int localZOrder)
void ScrollView::addChild(Node *child, int zOrder, int tag)
{
child->setGlobalZOrder(_globalZOrder);
_innerContainer->addChild(child, zOrder, tag);
}
void ScrollView::addChild(Node* child, int zOrder, const std::string &name)
{
child->setGlobalZOrder(_globalZOrder);
_innerContainer->addChild(child, zOrder, name);
}

View File

@ -76,6 +76,7 @@ bool UIListViewTest_Vertical::init()
_listView->setDirection(ui::ScrollView::Direction::VERTICAL);
_listView->setBounceEnabled(true);
_listView->setBackGroundImage("cocosui/green_edit.png");
_listView->setGlobalZOrder(200);
_listView->setBackGroundImageScale9Enabled(true);
_listView->setContentSize(Size(240, 130));
_listView->setPosition(Vec2((widgetSize - _listView->getContentSize()) / 2.0f));

View File

@ -61,6 +61,7 @@ bool UIPageViewTest::init()
pageView->setPosition((widgetSize - pageView->getContentSize()) / 2.0f);
pageView->removeAllItems();
pageView->setIndicatorEnabled(true);
pageView->setGlobalZOrder(200);
int pageCount = 4;
for (int i = 0; i < pageCount; ++i)

View File

@ -60,6 +60,7 @@ bool UIScrollViewTest_Vertical::init()
scrollView->setScrollBarWidth(4);
scrollView->setScrollBarPositionFromCorner(Vec2(2, 2));
scrollView->setScrollBarColor(Color3B::WHITE);
scrollView->setGlobalZOrder(200);
_uiLayer->addChild(scrollView);
ImageView* imageView = ImageView::create("cocosui/ccicon.png");