mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
fix infinite recursion on moveInto used to move to descendant node
This commit is contained in:
parent
f5de330f3f
commit
4f1411b005
3 changed files with 10 additions and 3 deletions
|
|
@ -376,14 +376,14 @@ void UINode::setGravity(Gravity gravity) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UINode::isSubnodeOf(const UINode* node) {
|
bool UINode::isDescendantOf(const UINode* node) {
|
||||||
if (parent == nullptr) {
|
if (parent == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (parent == node) {
|
if (parent == node) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return parent->isSubnodeOf(node);
|
return parent->isDescendantOf(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UINode::getIndices(
|
void UINode::getIndices(
|
||||||
|
|
|
||||||
|
|
@ -290,7 +290,7 @@ namespace gui {
|
||||||
|
|
||||||
virtual void setGravity(Gravity gravity);
|
virtual void setGravity(Gravity gravity);
|
||||||
|
|
||||||
bool isSubnodeOf(const UINode* node);
|
bool isDescendantOf(const UINode* node);
|
||||||
|
|
||||||
/// @brief collect all nodes having id
|
/// @brief collect all nodes having id
|
||||||
static void getIndices(
|
static void getIndices(
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,13 @@ static int l_container_set_interval(lua::State* L) {
|
||||||
static int l_move_into(lua::State* L) {
|
static int l_move_into(lua::State* L) {
|
||||||
auto node = get_document_node(L, 1);
|
auto node = get_document_node(L, 1);
|
||||||
auto dest = get_document_node(L, 2);
|
auto dest = get_document_node(L, 2);
|
||||||
|
if (dest.node == nullptr) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (dest.node->isDescendantOf(node.node.get())) {
|
||||||
|
luaL_error(L, "unable to move element to its descendant");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
UINode::moveInto(
|
UINode::moveInto(
|
||||||
node.node, std::dynamic_pointer_cast<Container>(dest.node)
|
node.node, std::dynamic_pointer_cast<Container>(dest.node)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue