Skip to content

Commit be05b7d

Browse files
committed
fix(ohos): not notify scroll event when only click
1 parent 4cfd35a commit be05b7d

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

framework/ohos/src/main/cpp/impl/renderer/native/include/renderer/components/scroll_view.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class ScrollView : public BaseView, ScrollNodeDelegate {
6767

6868
bool isDragging_ = false;
6969
bool isScrollStarted_ = false;
70+
bool isMomentumStarted_ = false;
7071
float lastScrollOffset_ = 0;
7172
int64_t lastScrollTime_ = 0;
7273
};

framework/ohos/src/main/cpp/impl/renderer/native/src/components/scroll_view.cc

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,16 @@ void ScrollView::CheckFireBeginDragEvent() {
174174
isDragging_ = true;
175175
std::string eventName = HREventUtils::EVENT_SCROLLER_BEGIN_DRAG;
176176
EmitScrollEvent(eventName);
177-
EmitScrollEvent(HREventUtils::EVENT_SCROLLER_ON_SCROLL);
178177
}
179178
}
180179

181180
void ScrollView::CheckFireEndDragEvent() {
182181
if (isDragging_) {
183182
isDragging_ = false;
184-
EmitScrollEvent(HREventUtils::EVENT_SCROLLER_ON_SCROLL);
185183
std::string endDragEventName = HREventUtils::EVENT_SCROLLER_END_DRAG;
186184
EmitScrollEvent(endDragEventName);
187185
if (isScrollStarted_) {
186+
isMomentumStarted_ = true;
188187
std::string momentumBeginEventName = HREventUtils::EVENT_SCROLLER_MOMENTUM_BEGIN;
189188
EmitScrollEvent(momentumBeginEventName);
190189
}
@@ -252,15 +251,19 @@ void ScrollView::OnScroll(float xOffset, float yOffset) {
252251

253252
void ScrollView::OnScrollStart() {
254253
isScrollStarted_ = true;
254+
EmitScrollEvent(HREventUtils::EVENT_SCROLLER_ON_SCROLL);
255255
}
256256

257257
void ScrollView::OnScrollStop() {
258258
isScrollStarted_ = false;
259259
lastScrollTime_ = 0;
260260
lastScrollOffset_ = 0;
261261
EmitScrollEvent(HREventUtils::EVENT_SCROLLER_ON_SCROLL);
262-
std::string eventName = std::string(HREventUtils::EVENT_SCROLLER_MOMENTUM_END);
263-
EmitScrollEvent(eventName);
262+
if (isMomentumStarted_) {
263+
isMomentumStarted_ = false;
264+
std::string eventName = std::string(HREventUtils::EVENT_SCROLLER_MOMENTUM_END);
265+
EmitScrollEvent(eventName);
266+
}
264267
}
265268

266269
void ScrollView::OnReachStart() {

0 commit comments

Comments
 (0)