genlist : add size_calc forcely about content when elm_layout. 53/56353/1 accepted/tizen/mobile/20160108.065000 accepted/tizen/tv/20160108.065024 accepted/tizen/wearable/20160108.065047 submit/tizen/20160108.022804
authorSangHyeon Lee <sh10233.lee@samsung.com>
Mon, 4 Jan 2016 09:02:11 +0000 (18:02 +0900)
committerSangHyeon Lee <sh10233.lee@samsung.com>
Thu, 7 Jan 2016 02:22:46 +0000 (11:22 +0900)
Summary:
If the content object of genlist item is 'elm_layout' class,
minimum size cannot get directly becuase layout do the delay calculating.
So to make proper genlist size calc, before the swallowing,
forcely do the size calc about layout class contents in genlist.

@fix

Test Plan: N/A

Reviewers: raster, cedric, singh.amitesh, Hermet

Reviewed By: Hermet

Subscribers: seoz, conr2d, eagleeye

Differential Revision: https://phab.enlightenment.org/D3478

Change-Id: I1678cdb0e288db356cb2631f54bc37c8c6492294

src/lib/elm_genlist.c

index e59b373..171a922 100644 (file)
@@ -385,6 +385,21 @@ _item_content_realize(Elm_Gen_Item *it,
                content = it->itc->func.content_get
                   ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
              if (!content) continue;
+
+             // FIXME: cause elm_layout sizing eval is delayed by smart calc,
+             // genlist cannot get actual min size of edje.
+             // This is workaround code to set min size directly.
+             if (eo_class_get(content) == ELM_LAYOUT_CLASS)
+               {
+                  Evas_Coord old_w, old_h, minw = 0, minh = 0;
+                  evas_object_size_hint_min_get(content, &old_w, &old_h);
+                  edje_object_size_min_calc(elm_layout_edje_get(content), &minw, &minh);
+
+                  if (old_w > minw) minw = old_w;
+                  if (old_h > minh) minw = old_h;
+                  evas_object_size_hint_min_set(content, minw, minh);
+               }
+
              *contents = eina_list_append(*contents, content);
              if (_elm_config->atspi_mode && eo_isa(content, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
                eo_do(content, elm_interface_atspi_accessible_parent_set(EO_OBJ(it)));