Skip to content

Commit a612492

Browse files
JSUYAswift-kim
authored andcommitted
TizenViewElementary: Change the size of view when the size of container changes (#302)
* 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. * TIzenViewBase: Refactoring view resize OnGeometryChanged() is not a method for TizenView, so refactor it to not use it.
1 parent a117967 commit a612492

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

shell/platform/tizen/flutter_tizen_elementary.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,5 @@ void FlutterDesktopViewResize(FlutterDesktopViewRef view_ref,
9292
int32_t width,
9393
int32_t height) {
9494
auto* view = reinterpret_cast<flutter::FlutterTizenView*>(view_ref);
95-
flutter::TizenGeometry view_geometry = {0, 0, width, height};
96-
view->tizen_view()->OnGeometryChanged(view_geometry);
95+
view->OnResize(0, 0, width, height);
9796
}

shell/platform/tizen/tizen_view_base.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,6 @@ class TizenViewBase {
4848

4949
virtual void ResizeWithRotation(TizenGeometry geometry, int32_t degree) = 0;
5050

51-
// FIXME
52-
// This is a temporary implementation that is only used by the window channel.
53-
virtual void OnGeometryChanged(TizenGeometry geometry) = 0;
54-
5551
virtual void Show() = 0;
5652

5753
virtual TizenViewType GetType() = 0;

shell/platform/tizen/tizen_view_elementary.cc

Lines changed: 26 additions & 6 deletions
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,22 @@ 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+
129+
self->view_->OnResize(0, 0, width, height);
130+
}
131+
}
132+
};
133+
evas_object_event_callback_add(container_, EVAS_CALLBACK_RESIZE,
134+
evas_object_callbacks_[EVAS_CALLBACK_RESIZE],
135+
this);
136+
120137
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_DOWN] =
121138
[](void* data, Evas* evas, Evas_Object* object, void* event_info) {
122139
auto* self = reinterpret_cast<TizenViewElementary*>(data);
@@ -263,6 +280,8 @@ void TizenViewElementary::RegisterEventHandlers() {
263280
}
264281

265282
void TizenViewElementary::UnregisterEventHandlers() {
283+
evas_object_event_callback_del(container_, EVAS_CALLBACK_RESIZE,
284+
evas_object_callbacks_[EVAS_CALLBACK_RESIZE]);
266285
evas_object_event_callback_del(
267286
event_layer_, EVAS_CALLBACK_MOUSE_DOWN,
268287
evas_object_callbacks_[EVAS_CALLBACK_MOUSE_DOWN]);
@@ -292,6 +311,10 @@ TizenGeometry TizenViewElementary::GetGeometry() {
292311
void TizenViewElementary::SetGeometry(TizenGeometry geometry) {
293312
EvasObjectResize(image_, geometry.width, geometry.height);
294313
evas_object_move(image_, geometry.left, geometry.top);
314+
evas_object_image_size_set(image_, geometry.width, geometry.height);
315+
316+
EvasObjectResize(container_, geometry.width, geometry.height);
317+
evas_object_move(container_, geometry.left, geometry.top);
295318
}
296319

297320
int32_t TizenViewElementary::GetDpi() {
@@ -309,6 +332,8 @@ uintptr_t TizenViewElementary::GetWindowId() {
309332

310333
void TizenViewElementary::ResizeWithRotation(TizenGeometry geometry,
311334
int32_t angle) {
335+
SetGeometry(geometry);
336+
312337
TizenRendererEvasGL* renderer_evas_gl =
313338
reinterpret_cast<TizenRendererEvasGL*>(view_->engine()->renderer());
314339
renderer_evas_gl->ResizeSurface(geometry.width, geometry.height);
@@ -320,11 +345,6 @@ void TizenViewElementary::Show() {
320345
evas_object_show(event_layer_);
321346
}
322347

323-
void TizenViewElementary::OnGeometryChanged(TizenGeometry geometry) {
324-
SetGeometry(geometry);
325-
view_->OnResize(geometry.left, geometry.top, geometry.width, geometry.height);
326-
}
327-
328348
void TizenViewElementary::PrepareInputMethod() {
329349
input_method_context_ =
330350
std::make_unique<TizenInputMethodContext>(GetWindowId());

shell/platform/tizen/tizen_view_elementary.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ class TizenViewElementary : public TizenView {
4040

4141
void Show() override;
4242

43-
void OnGeometryChanged(TizenGeometry geometry) override;
44-
4543
private:
4644
bool CreateView();
4745

shell/platform/tizen/tizen_window.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class TizenWindow : public TizenViewBase {
3030
// Returns the geometry of the display screen.
3131
virtual TizenGeometry GetScreenGeometry() = 0;
3232

33+
virtual void OnGeometryChanged(TizenGeometry geometry) = 0;
34+
3335
virtual void BindKeys(const std::vector<std::string>& keys) = 0;
3436

3537
TizenViewType GetType() override { return TizenViewType::kWindow; };

0 commit comments

Comments
 (0)