#include 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 { 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; } };