Skip to content

Commit 2c14b3a

Browse files
committed
Fix scroll event
1 parent a1f8ba4 commit 2c14b3a

File tree

2 files changed

+40
-19
lines changed

2 files changed

+40
-19
lines changed

shell/platform/tizen/tizen_view_elementary.cc

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ void TizenViewElementary::RegisterEventHandlers() {
140140
if (self->view_) {
141141
if (self->event_layer_ == object) {
142142
auto* mouse_event = reinterpret_cast<Evas_Event_Mouse_Up*>(event_info);
143+
if (self->scroll_hold_) {
144+
elm_object_scroll_hold_pop(self->event_layer_);
145+
self->scroll_hold_ = false;
146+
}
143147
self->view_->OnPointerUp(mouse_event->canvas.x, mouse_event->canvas.y,
144148
mouse_event->timestamp,
145149
kFlutterPointerDeviceKindTouch,
@@ -150,23 +154,26 @@ void TizenViewElementary::RegisterEventHandlers() {
150154
evas_object_event_callback_add(event_layer_, EVAS_CALLBACK_MOUSE_UP,
151155
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_UP],
152156
this);
153-
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_MOVE] = [](void* data, Evas* evas,
154-
Evas_Object* object,
155-
void* event_info) {
156-
auto* self = reinterpret_cast<TizenViewElementary*>(data);
157-
if (self->view_) {
158-
if (self->event_layer_ == object) {
159-
auto* mouse_event =
160-
reinterpret_cast<Evas_Event_Mouse_Move*>(event_info);
161-
mouse_event->event_flags = (Evas_Event_Flags)(mouse_event->event_flags &
162-
EVAS_EVENT_FLAG_ON_HOLD);
163-
self->view_->OnPointerMove(
164-
mouse_event->cur.canvas.x, mouse_event->cur.canvas.y,
165-
mouse_event->timestamp, kFlutterPointerDeviceKindTouch,
166-
mouse_event->buttons);
167-
}
168-
}
169-
};
157+
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_MOVE] =
158+
[](void* data, Evas* evas, Evas_Object* object, void* event_info) {
159+
auto* self = reinterpret_cast<TizenViewElementary*>(data);
160+
if (self->view_) {
161+
if (self->event_layer_ == object) {
162+
auto* mouse_event =
163+
reinterpret_cast<Evas_Event_Mouse_Move*>(event_info);
164+
mouse_event->event_flags = static_cast<Evas_Event_Flags>(
165+
mouse_event->event_flags | EVAS_EVENT_FLAG_ON_HOLD);
166+
if (!self->scroll_hold_) {
167+
elm_object_scroll_hold_push(self->event_layer_);
168+
self->scroll_hold_ = true;
169+
}
170+
self->view_->OnPointerMove(
171+
mouse_event->cur.canvas.x, mouse_event->cur.canvas.y,
172+
mouse_event->timestamp, kFlutterPointerDeviceKindTouch,
173+
mouse_event->buttons);
174+
}
175+
}
176+
};
170177
evas_object_event_callback_add(
171178
event_layer_, EVAS_CALLBACK_MOUSE_MOVE,
172179
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_MOVE], this);
@@ -206,7 +213,8 @@ void TizenViewElementary::RegisterEventHandlers() {
206213
if (self->event_layer_ == object) {
207214
auto* key_event = reinterpret_cast<Evas_Event_Key_Down*>(event_info);
208215
int handled = false;
209-
key_event->event_flags = EVAS_EVENT_FLAG_ON_HOLD;
216+
key_event->event_flags = static_cast<Evas_Event_Flags>(
217+
key_event->event_flags | EVAS_EVENT_FLAG_ON_HOLD);
210218
if (self->input_method_context_->IsInputPanelShown()) {
211219
handled =
212220
self->input_method_context_->HandleEvasEventKeyDown(key_event);
@@ -231,7 +239,8 @@ void TizenViewElementary::RegisterEventHandlers() {
231239
if (self->event_layer_ == object) {
232240
auto* key_event = reinterpret_cast<Evas_Event_Key_Up*>(event_info);
233241
int handled = false;
234-
key_event->event_flags = EVAS_EVENT_FLAG_ON_HOLD;
242+
key_event->event_flags = static_cast<Evas_Event_Flags>(
243+
key_event->event_flags | EVAS_EVENT_FLAG_ON_HOLD);
235244
if (self->input_method_context_->IsInputPanelShown()) {
236245
handled =
237246
self->input_method_context_->HandleEvasEventKeyUp(key_event);
@@ -278,6 +287,16 @@ TizenViewBase::Geometry TizenViewElementary::GetRenderTargetGeometry() {
278287
}
279288

280289
void TizenViewElementary::SetRenderTargetGeometry(Geometry geometry) {
290+
evas_object_resize(container_, geometry.width, geometry.height);
291+
evas_object_size_hint_min_set(container_, geometry.width, geometry.height);
292+
evas_object_size_hint_max_set(container_, geometry.width, geometry.height);
293+
evas_object_move(container_, geometry.left, geometry.top);
294+
295+
evas_object_resize(event_layer_, geometry.width, geometry.height);
296+
evas_object_size_hint_min_set(event_layer_, geometry.width, geometry.height);
297+
evas_object_size_hint_max_set(event_layer_, geometry.width, geometry.height);
298+
evas_object_move(event_layer_, geometry.left, geometry.top);
299+
281300
evas_object_resize(image_, geometry.width, geometry.height);
282301
evas_object_size_hint_min_set(image_, geometry.width, geometry.height);
283302
evas_object_size_hint_max_set(image_, geometry.width, geometry.height);

shell/platform/tizen/tizen_view_elementary.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class TizenViewElementary : public TizenView {
6262
std::unordered_map<Evas_Callback_Type, Evas_Object_Event_Cb>
6363
evas_object_callbacks_;
6464
std::vector<Ecore_Event_Handler*> ecore_event_key_handlers_;
65+
66+
bool scroll_hold_ = false;
6567
};
6668

6769
} // namespace flutter

0 commit comments

Comments
 (0)