From d28084c3bfc59d32ff3cf665739cd6f440c773b4 Mon Sep 17 00:00:00 2001 From: altalk23 <45172705+altalk23@users.noreply.github.com> Date: Sat, 23 Dec 2023 11:52:05 +0300 Subject: [PATCH] i hate force prio i hate force prio --- .../touch_dispatcher/CCTouchDispatcher.h | 9 +++--- loader/src/hooks/TouchDispatcherFix.cpp | 32 ++++++++----------- loader/test/members/Android.cpp | 3 ++ 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/loader/include/Geode/cocos/touch_dispatcher/CCTouchDispatcher.h b/loader/include/Geode/cocos/touch_dispatcher/CCTouchDispatcher.h index 5e2256b4..7f6035d9 100644 --- a/loader/include/Geode/cocos/touch_dispatcher/CCTouchDispatcher.h +++ b/loader/include/Geode/cocos/touch_dispatcher/CCTouchDispatcher.h @@ -233,10 +233,11 @@ protected: // 4, 1 for each type of event struct ccTouchHandlerHelperData m_sHandlerHelperData[ccTouchMax]; - RT_ADD( - CC_SYNTHESIZE_NV(bool, m_bForcePrio, ForcePrio); - CC_SYNTHESIZE_NV(int, m_nTargetPrio, TargetPrio); - ) + // 2.2 changes + + CC_SYNTHESIZE_NV(int, m_forcePrio, ForcePrio); + CC_SYNTHESIZE_NV(int, m_targetPrio, TargetPrio); + int m_inversePrio; }; // end of input group diff --git a/loader/src/hooks/TouchDispatcherFix.cpp b/loader/src/hooks/TouchDispatcherFix.cpp index 859cb980..0be62b46 100644 --- a/loader/src/hooks/TouchDispatcherFix.cpp +++ b/loader/src/hooks/TouchDispatcherFix.cpp @@ -2,24 +2,20 @@ using namespace geode::prelude; // TODO: 2.2 changes touch prio, we need to test how that affects things -// #include <Geode/modify/CCTouchDispatcher.hpp> +#include <Geode/modify/CCTouchDispatcher.hpp> -// struct ForcePrioRevert : Modify<ForcePrioRevert, CCTouchDispatcher> { -// void addTargetedDelegate(CCTouchDelegate* delegate, int priority, bool swallowsTouches) { -// m_bForcePrio = false; -// if (m_pTargetedHandlers->count() > 0) { -// auto handler = static_cast<CCTouchHandler*>(m_pTargetedHandlers->objectAtIndex(0)); -// priority = handler->getPriority() - 2; -// } +struct ForcePrioRevert : Modify<ForcePrioRevert, CCTouchDispatcher> { + bool isUsingForcePrio() { + return true; + } -// CCTouchDispatcher::addTargetedDelegate(delegate, priority, swallowsTouches); -// } + void addTargetedDelegate(CCTouchDelegate* delegate, int priority, bool swallowsTouches) { + m_forcePrio = -2; + if (m_pTargetedHandlers->count() > 0) { + auto handler = static_cast<CCTouchHandler*>(m_pTargetedHandlers->objectAtIndex(0)); + m_forcePrio = handler->getPriority() - 2; + } -// void incrementForcePrio(int num) { -// m_bForcePrio = false; -// } - -// void decrementForcePrio(int num) { -// m_bForcePrio = false; -// } -// }; + CCTouchDispatcher::addTargetedDelegate(delegate, 0, swallowsTouches); + } +}; diff --git a/loader/test/members/Android.cpp b/loader/test/members/Android.cpp index d1acbd35..88487c06 100644 --- a/loader/test/members/Android.cpp +++ b/loader/test/members/Android.cpp @@ -34,6 +34,9 @@ GEODE_SIZE_CHECK(SliderTouchLogic, 0x174); GEODE_SIZE_CHECK(CCScrollLayerExt, 0x184); GEODE_SIZE_CHECK(TableView, 0x1dc); GEODE_SIZE_CHECK(CCTextInputNode, 0x1a0); +GEODE_SIZE_CHECK(CCTouchDispatcher, 0x6c); + +// GEODE_MEMBER_CHECK(CCTouchDispatcher, m_forcePrio, 0x60); GEODE_MEMBER_CHECK(CCTextInputNode, m_maxLabelWidth, 0x164); GEODE_MEMBER_CHECK(CCTextInputNode, m_textField, 0x17c);