Make CCTextInputNode work in nested hierarchies ()

This commit is contained in:
Mazin Eltahawy 2023-10-22 16:38:09 +03:00 committed by GitHub
parent 626b86c328
commit 746966c423
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -0,0 +1,27 @@
#include <Geode/modify/CCTextInputNode.hpp>
using namespace geode::prelude;
// rob only uses `CCTextInputNode`s in mostly-flat hierarchies, which still
// happen to work with the weird vanilla code. this fix makes it work even in
// deep hierarchies, because the vanilla code uses `getParent` and manually
// calculates the child location in the world space based on that rather than
// using `convertToNodeSpace`.
struct CCTextInputNodeFix : Modify<CCTextInputNodeFix, CCTextInputNode> {
bool ccTouchBegan(CCTouch* touch, CCEvent* event) {
CCPoint pos = this->convertTouchToNodeSpace(touch);
CCSize size = this->getContentSize();
pos += m_textField->getAnchorPoint() * size;
if (pos.x < 0 || pos.x > size.width || pos.y < 0 || pos.y > size.height)
return false;
if (!m_delegate->allowTextInput(this))
return false;
this->onClickTrackNode(true);
return true;
}
};