From ff31129b5e898b0f4a7a5fdb9f9f1caa8a9c0e87 Mon Sep 17 00:00:00 2001 From: u0u0 Date: Thu, 14 Sep 2023 21:46:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=9B=9E=E8=B0=83=E4=B8=AD?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=87=AA=E5=B7=B1=E7=9A=84=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E4=BF=9D=E6=8A=A4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cocos/ui/UIWidget.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cocos/ui/UIWidget.cpp b/cocos/ui/UIWidget.cpp index e183d6e..016cba5 100644 --- a/cocos/ui/UIWidget.cpp +++ b/cocos/ui/UIWidget.cpp @@ -812,6 +812,9 @@ void Widget::onTouchMoved(Touch *touch, Event* /*unusedEvent*/) void Widget::onTouchEnded(Touch *touch, Event* /*unusedEvent*/) { + // if self be released in propagateTouchEvent, may crash at setHighlighted. + // use retain() to avoid such case. + this->retain(); _touchEndPosition = touch->getLocation(); /* @@ -833,6 +836,7 @@ void Widget::onTouchEnded(Touch *touch, Event* /*unusedEvent*/) { cancelUpEvent(); } + this->release(); } void Widget::onTouchCancelled(Touch* touch, Event* /*unusedEvent*/)