Skip to content

Commit 87f7258

Browse files
committed
TizenViewElementary: Change the size of view when the size of container changes
When the size of the container is changed from the outside, the size of FlutterView and the size of the image are changed together. +) Basically, the size of the container is set according to the size of the image. It was enough to set min/max size only for images. After setting the image size for an unknown reason, the container resize callback is called once again. At this time, evas_object_geometry_get() of container_ returns the initially set value and the size backs to the original size. Therefore, we set min/max of container_ together.
1 parent 91edce9 commit 87f7258

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

shell/platform/tizen/tizen_view_elementary.cc

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ bool TizenViewElementary::CreateView() {
8787
return false;
8888
}
8989
evas_object_size_hint_align_set(image_, EVAS_HINT_FILL, EVAS_HINT_FILL);
90-
EvasObjectResize(image_, initial_width_, initial_height_);
9190
evas_object_image_size_set(image_, initial_width_, initial_height_);
9291
evas_object_image_alpha_set(image_, EINA_TRUE);
9392
elm_table_pack(container_, image_, 0, 0, 1, 1);
@@ -107,6 +106,8 @@ bool TizenViewElementary::CreateView() {
107106
evas_object_color_set(event_layer_, 0, 0, 0, 0);
108107
elm_table_pack(container_, event_layer_, 0, 0, 1, 1);
109108

109+
SetGeometry(TizenGeometry{0, 0, initial_width_, initial_height_});
110+
110111
return true;
111112
}
112113

@@ -117,6 +118,21 @@ void TizenViewElementary::DestroyView() {
117118
}
118119

119120
void TizenViewElementary::RegisterEventHandlers() {
121+
evas_object_callbacks_[EVAS_CALLBACK_RESIZE] =
122+
[](void* data, Evas* evas, Evas_Object* object, void* event_info) {
123+
auto* self = reinterpret_cast<TizenViewElementary*>(data);
124+
if (self->view_) {
125+
if (self->container_ == object) {
126+
int32_t width = 0, height = 0;
127+
evas_object_geometry_get(object, nullptr, nullptr, &width, &height);
128+
self->SetGeometry(TizenGeometry{0, 0, width, height});
129+
}
130+
}
131+
};
132+
evas_object_event_callback_add(container_, EVAS_CALLBACK_RESIZE,
133+
evas_object_callbacks_[EVAS_CALLBACK_RESIZE],
134+
this);
135+
120136
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_DOWN] =
121137
[](void* data, Evas* evas, Evas_Object* object, void* event_info) {
122138
auto* self = reinterpret_cast<TizenViewElementary*>(data);
@@ -263,6 +279,8 @@ void TizenViewElementary::RegisterEventHandlers() {
263279
}
264280

265281
void TizenViewElementary::UnregisterEventHandlers() {
282+
evas_object_event_callback_del(container_, EVAS_CALLBACK_RESIZE,
283+
evas_object_callbacks_[EVAS_CALLBACK_RESIZE]);
266284
evas_object_event_callback_del(
267285
image_, EVAS_CALLBACK_MOUSE_DOWN,
268286
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_DOWN]);
@@ -292,6 +310,10 @@ TizenGeometry TizenViewElementary::GetGeometry() {
292310
void TizenViewElementary::SetGeometry(TizenGeometry geometry) {
293311
EvasObjectResize(image_, geometry.width, geometry.height);
294312
evas_object_move(image_, geometry.left, geometry.top);
313+
evas_object_image_size_set(image_, geometry.width, geometry.height);
314+
315+
EvasObjectResize(container_, geometry.width, geometry.height);
316+
evas_object_move(container_, geometry.left, geometry.top);
295317
}
296318

297319
int32_t TizenViewElementary::GetDpi() {

0 commit comments

Comments
 (0)