popup: support scrollable content
authorJinYong Park <j4939.park@samsung.com>
Mon, 7 Nov 2016 03:41:14 +0000 (12:41 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 17 Nov 2016 08:07:48 +0000 (17:07 +0900)
@tizen_fix (tizen 2.4 feature)

spin gerrit : I84cee87c36bf2a2facc5fb6ced9f9e4eac1380c5

Change-Id: Ibbfcc68760c81a7ea9ff65bebb81e5f30e4a8f65
Signed-off-by: Jinyong Park <j4939.park@samsung.com>
src/lib/elc_popup.c
src/lib/elm_widget_popup.h

index 9a6f310ae7f5b5f10ba0f823253fbf5e8a249235..7350cfe4680555f8a38f3700432a7cc4a5735aaa 100644 (file)
@@ -676,6 +676,13 @@ _elm_popup_elm_layout_sizing_eval(Eo *obj, Elm_Popup_Data *sd)
 
         evas_object_size_hint_min_set(sd->content_area, minw, minh);
 
+        //TIZEN_ONLY(20161107): supprot scrollable content
+        //FIXME: genlist only now, it should be changed to support other scrollable.
+        if (sd->scrollable_content)
+          minh = sd->min_scrollable_content_h;
+        //
+
+
         if (minh > sd->max_sc_h)
           evas_object_size_hint_min_set(sd->spacer, minw, sd->max_sc_h);
         else
@@ -1146,6 +1153,23 @@ _item_unfocused_cb(void *data,
    return EINA_TRUE;
 }
 
+//TIZEN_ONLY(20161107): support scrollable content
+//FIXME: genlist only now, it should be changed to support other scrollable.
+static void
+_scrollable_content_loaded_cb(void *data, Evas_Object *obj, void *event_info)
+{
+   ELM_POPUP_DATA_GET(data, sd);
+
+   Evas_Coord h;
+   eo_do(obj, elm_interface_scrollable_content_size_get(NULL, &h));
+
+   sd->scrollable_content = EINA_TRUE;
+   sd->min_scrollable_content_h = h;
+
+   elm_layout_sizing_eval(data);
+}
+//
+
 EOLIAN static Eo *
 _elm_popup_item_eo_base_constructor(Eo *eo_it, Elm_Popup_Item_Data *it)
 {
@@ -1323,6 +1347,10 @@ _content_text_set(Evas_Object *obj,
         _elm_access_text_set(_elm_access_info_get(ao), ELM_ACCESS_INFO, text);
      }
 
+   //TIZEN_ONLY(20161107): support scrollable content
+   //FIXME: genlist only now, it should be changed to support other scrollable.
+   sd->scrollable_content = EINA_FALSE;
+   //
 end:
    return EINA_TRUE;
 }
@@ -1424,6 +1452,11 @@ _content_set(Evas_Object *obj,
 {
    ELM_POPUP_DATA_GET(obj, sd);
 
+   //TIZEN_ONLY(20161107): support scrollable content
+   //FIXME: genlist only now, it should be changed to support other scrollable.
+   sd->scrollable_content = EINA_FALSE;
+   //
+
    if (sd->content && sd->content == content) return EINA_TRUE;
    if (sd->items)
      {
@@ -1444,6 +1477,12 @@ _content_set(Evas_Object *obj,
         eo_do(sd->content_area, elm_obj_container_content_set
           (CONTENT_PART, content));
 
+        //TIZEN_ONLY(20161107): support scrollable content
+        //FIXME: genlist only now, it should be changed to support other scrollable.
+        if (eo_isa(content, ELM_INTERFACE_SCROLLABLE_MIXIN))
+          evas_object_smart_callback_add(content, "loaded", _scrollable_content_loaded_cb, obj);
+        //
+
         evas_object_event_callback_add
           (content, EVAS_CALLBACK_DEL, _on_content_del, obj);
      }
@@ -1648,6 +1687,11 @@ _content_unset(Evas_Object *obj)
    eo_do(sd->content_area, content = elm_obj_container_content_unset(CONTENT_PART));
    sd->content = NULL;
 
+   //TIZEN_ONLY(20161107): support scrollable content
+   //FIXME: genlist only now, it should be changed to support other scrollable.
+   sd->scrollable_content = EINA_FALSE;
+   //
+
    elm_layout_sizing_eval(obj);
 
    return content;
@@ -1841,6 +1885,10 @@ _elm_popup_evas_object_smart_add(Eo *obj, Elm_Popup_Data *priv)
    //TIZEN_ONLY(20160624): add a allow eval flag not to call another sizing eval during sizing eval
    priv->allow_eval = EINA_TRUE;
    //
+   //TIZEN_ONLY(20161107): support scrollable content
+   //FIXME: genlist only now, it should be changed to support other scrollable.
+   priv->scrollable_content = EINA_FALSE;
+   //
 
    snprintf(style, sizeof(style), "popup/%s", elm_widget_style_get(obj));
 
index e483e33e13db23a05ea3e886b6124b113a3c6f9e..a35fece0288301cb410807e1359c38466f35b990 100644 (file)
@@ -69,6 +69,12 @@ struct _Elm_Popup_Data
    //TIZEN_ONLY(20160630): add postfix to support backward compatability
    Eina_Bool             style_postfix;
    //
+
+   //TIZEN_ONLY(20161107): Supprot scrollable content
+   //FIXME: genlist only now, it should be changed to support other scrollable.
+   Evas_Coord            min_scrollable_content_h;
+   Eina_Bool             scrollable_content: 1;
+   //
 };
 
 typedef struct _Elm_Popup_Item_Data Elm_Popup_Item_Data;