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);