ami pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=0891ac5cfc2710d0c890340515aa5dbbe1f20466

commit 0891ac5cfc2710d0c890340515aa5dbbe1f20466
Author: Amitesh Singh <amitesh...@samsung.com>
Date:   Sat Aug 15 21:02:33 2015 +0530

    popup: make scroller optional in popup
    
    Summary:
    @feature
    
    Resolves: T2651
    
    Test Plan:
    1. elementary_test -to "popup"
    2. Enable/disable checkbox named "Enable popup scoller"
    
    Reviewers: raster, herb, herdsman, SanghyeonLee, tasn, simotek, cedric, 
jeffhoogland
    
    Subscribers: seoz
    
    Differential Revision: https://phab.enlightenment.org/D2945
---
 data/themes/edc/elm/popup.edc    |  17 +++-
 data/themes/edc/elm/scroller.edc |   3 +-
 src/bin/test_popup.c             |  43 +++++++++
 src/lib/elc_popup.c              | 182 ++++++++++++++++++++++++++++++---------
 src/lib/elm_popup.eo             |  21 +++++
 src/lib/elm_widget_popup.h       |   2 +
 6 files changed, 225 insertions(+), 43 deletions(-)

diff --git a/data/themes/edc/elm/popup.edc b/data/themes/edc/elm/popup.edc
index 2ac2594..e499999 100644
--- a/data/themes/edc/elm/popup.edc
+++ b/data/themes/edc/elm/popup.edc
@@ -367,11 +367,26 @@ group { name: "elm/popup/base/default";
 group { name: "elm/popup/content/popup/default";
    alias: "elm/popup/content/popup/transparent";
    alias: "elm/popup/content/popup/subpopup";
+   data.item: "scroller_enable" "on";
    parts {
       part { name:"elm.swallow.content"; type: SWALLOW;
          description { state: "default" 0.0;
-           min: 240 0;
          }
+         description { state: "scroll" 0.0;
+            min: 240 0;
+         }
+      }
+   }
+   programs {
+      program {
+         signal: "elm,scroll,enable"; source: "elm";
+         action: STATE_SET "scroll" 0.0;
+         target: "elm.swallow.content";
+      }
+      program {
+         signal: "elm,scroll,disable"; source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "elm.swallow.content";
       }
    }
 }
diff --git a/data/themes/edc/elm/scroller.edc b/data/themes/edc/elm/scroller.edc
index cf1cb99..2f3d699 100644
--- a/data/themes/edc/elm/scroller.edc
+++ b/data/themes/edc/elm/scroller.edc
@@ -1308,8 +1308,7 @@ group { name: "elm/scroller/contents/default";
 group { name: "elm/scroller/base/popup/no_inset_shadow";
    inherit: "elm/scroller/base/default";
    parts {
-      part { name: "elm.swallow.content";
-         type: SWALLOW;
+      part { name: "elm.swallow.content"; type: SWALLOW;
          description { state: "default" 0.0;
             rel1.offset: 0 0;
             rel2.offset: 0 0;
diff --git a/src/bin/test_popup.c b/src/bin/test_popup.c
index a2e576c..dcfba0e 100644
--- a/src/bin/test_popup.c
+++ b/src/bin/test_popup.c
@@ -13,6 +13,7 @@ typedef struct
 
 static Evas_Object *g_popup = NULL;
 static int times = 0;
+static Eina_Bool is_popup_scroll;
 static Evas_Rel_Coord_Point _popup_point[POPUP_POINT_MAX] =
 {
    { 0.01, 0.01 },
@@ -122,6 +123,7 @@ _popup_center_text_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *popup;
 
    popup = elm_popup_add(data);
+   elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_object_text_set(popup, "This Popup has content area and "
                        "timeout value is 3 seconds");
    elm_popup_timeout_set(popup, 3.0);
@@ -142,6 +144,7 @@ _popup_center_text_1button_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *btn;
 
    popup = elm_popup_add(data);
+   elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_object_text_set(popup, "This Popup has content area and "
                        "action area set, action area has one button Close");
 
@@ -164,6 +167,7 @@ _popup_center_title_text_1button_cb(void *data, Evas_Object 
*obj EINA_UNUSED,
    Evas_Object *btn;
 
    popup = elm_popup_add(data);
+   elm_popup_scrollable_set(popup, is_popup_scroll);
 
    // popup text
    elm_object_text_set(popup, "This Popup has title area, content area and "
@@ -190,6 +194,7 @@ _popup_center_title_text_block_clicked_event_cb(void *data,
    Evas_Object *popup;
 
    popup = elm_popup_add(data);
+   elm_popup_scrollable_set(popup, is_popup_scroll);
    evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb,
                                   NULL);
 
@@ -219,6 +224,7 @@ 
_popup_center_title_text_block_clicked_event_with_parent_cb(void *data,
    evas_object_show(bg);
 
    popup = elm_popup_add(bg);
+   elm_popup_scrollable_set(popup, is_popup_scroll);
    evas_object_smart_callback_add(popup, "block,clicked",
                                   _block_clicked_cb, bg);
 
@@ -244,6 +250,7 @@ _popup_bottom_title_text_3button_cb(void *data, Evas_Object 
*obj EINA_UNUSED,
    char buf[256];
 
    popup = elm_popup_add(data);
+   elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_popup_orient_set(popup, ELM_POPUP_ORIENT_BOTTOM);
 
    // popup text
@@ -292,6 +299,8 @@ _popup_center_title_content_3button_cb(void *data, 
Evas_Object *obj EINA_UNUSED,
    char buf[256];
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
 
    // popup title
    elm_object_part_text_set(popup, "title,text", "Title");
@@ -352,6 +361,8 @@ _popup_center_title_item_3button_cb(void *data, Evas_Object 
*obj EINA_UNUSED,
    Evas_Object *popup, *icon1, *btn1, *btn2, *btn3;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
 
    // popup title
    elm_object_part_text_set(popup, "title,text", "Title");
@@ -423,6 +434,8 @@ _popup_center_title_text_2button_restack_cb(void *data, 
Evas_Object *obj EINA_UN
    Evas_Object *btn, *btn2;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
    evas_object_smart_callback_add(popup, "block,clicked",
                                   _restack_block_clicked_cb, NULL);
 
@@ -466,6 +479,8 @@ _popup_center_text_1button_hide_show_cb(void *data, 
Evas_Object *obj EINA_UNUSED
      }
 
    g_popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(g_popup, is_popup_scroll);
    elm_object_text_set(g_popup, "Hide this popup by using the button."
                        "When you click list item again, you can see this 
popup.");
 
@@ -513,6 +528,8 @@ _popup_center_text_3button_add_remove_button_cb(void *data,
    int i;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
 
    // popup title
    elm_object_part_text_set(popup, "title,text",
@@ -547,6 +564,8 @@ _popup_transparent_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *btn;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_object_style_set(popup, "transparent");
    elm_object_text_set(popup, "This Popup has transparent background");
 
@@ -569,6 +588,8 @@ _popup_transparent_align_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *btn, *btn1;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_object_style_set(popup, "transparent");
    elm_object_text_set(popup, "This Popup has transparent background");
 
@@ -610,6 +631,8 @@ _popup_center_title_list_content_1button_cb(void *data, 
Evas_Object *obj EINA_UN
    Evas_Object *btn;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_object_part_text_set(popup, "title,text", "Title");
 
    // list as a popup content
@@ -640,6 +663,8 @@ _popup_center_title_genlist_content_1button_cb(void *data, 
Evas_Object *obj EINA
    int i;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_object_part_text_set(popup, "title,text", "Title");
 
    Elm_Genlist_Item_Class *itc1 = elm_genlist_item_class_new();
@@ -686,6 +711,8 @@ _subpopup_cb(void *data, Evas_Object *obj EINA_UNUSED,
    Evas_Object *btn, *btnclose;
 
    popup = elm_popup_add(data);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
    elm_object_style_set(popup, "subpopup");
    elm_object_part_text_set(popup, "title,text", "Title");
 
@@ -720,6 +747,8 @@ _popup_content_only_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    Evas_Object *win = data;
 
    popup = elm_popup_add(win);
+   if (is_popup_scroll)
+     elm_popup_scrollable_set(popup, is_popup_scroll);
 
    bx = elm_box_add(popup);
    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -774,6 +803,12 @@ _focus_changed_cb(void *data, Evas_Object *obj, void 
*event_info EINA_UNUSED)
    elm_win_focus_highlight_animate_set(data, check);
 }
 
+static void
+_popup_scroll_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info 
EINA_UNUSED)
+{
+   is_popup_scroll = elm_check_state_get(obj);
+}
+
 void
 test_popup(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
            void *event_info EINA_UNUSED)
@@ -849,6 +884,14 @@ test_popup(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED,
    evas_object_show(check);
    evas_object_smart_callback_add(check, "changed", _focus_changed_cb, win);
 
+   check = elm_check_add(box);
+   elm_object_text_set(check, "Enable popup scroll");
+   evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_pack_end(box, check);
+   evas_object_show(check);
+   evas_object_smart_callback_add(check, "changed", _popup_scroll_cb, NULL);
+
    evas_object_resize(win, 480, 400);
    evas_object_show(win);
 }
diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
index 90488d1..cbcab3c 100644
--- a/src/lib/elc_popup.c
+++ b/src/lib/elc_popup.c
@@ -134,9 +134,10 @@ _scroller_size_calc(Evas_Object *obj)
 
    ELM_POPUP_DATA_GET(obj, sd);
 
+   if (!sd->scroll && !sd->items) return;
+
    sd->scr_size_recalc = EINA_FALSE;
    sd->max_sc_h = -1;
-   sd->max_sc_w = -1;
    evas_object_geometry_get(sd->notify, NULL, NULL, NULL, &h);
    if (sd->title_text || sd->title_icon)
      edje_object_part_geometry_get(elm_layout_edje_get(sd->main_layout),
@@ -293,6 +294,26 @@ _access_obj_process(Eo *obj, Eina_Bool is_access)
      }
 }
 
+static void
+_populate_theme_scroll(Elm_Popup_Data *sd)
+{
+   const char *content_area_width;
+
+   if (sd->content_area)
+     {
+        content_area_width = edje_object_data_get(
+           elm_layout_edje_get(sd->content_area), "scroller_enable");
+        if (!content_area_width)
+          sd->theme_scroll = EINA_FALSE;
+        else if (!strcmp(content_area_width, "on"))
+          sd->theme_scroll = EINA_TRUE;
+        else
+          sd->theme_scroll = EINA_FALSE;
+     }
+   else
+     sd->theme_scroll = EINA_FALSE;
+}
+
 EOLIAN static Eina_Bool
 _elm_popup_elm_widget_theme_apply(Eo *obj, Elm_Popup_Data *sd)
 {
@@ -355,6 +376,12 @@ _elm_popup_elm_widget_theme_apply(Eo *obj, Elm_Popup_Data 
*sd)
    if (sd->title_icon)
      elm_layout_signal_emit(sd->main_layout, "elm,state,title,icon,visible", 
"elm");
 
+   _populate_theme_scroll(sd);
+   if (!sd->theme_scroll && sd->scroll)
+     sd->max_sc_w = 240 * elm_config_scale_get() * elm_object_scale_get(obj);
+   else
+     sd->max_sc_w = 0;
+
    _visuals_set(obj);
    _scroller_size_calc(obj);
    elm_layout_sizing_eval(obj);
@@ -400,7 +427,7 @@ _elm_popup_elm_layout_sizing_eval(Eo *obj, Elm_Popup_Data 
*sd)
         evas_object_size_hint_min_get(sd->scr, &minw, &minh);
         evas_object_size_hint_max_get(sd->scr, &minw, &minh);
      }
-   else if (sd->content || sd->text_content_obj)
+   else if (sd->scroll && (sd->content || sd->text_content_obj))
      {
         double horizontal, vertical;
         Evas_Coord w, h;
@@ -412,19 +439,30 @@ _elm_popup_elm_layout_sizing_eval(Eo *obj, Elm_Popup_Data 
*sd)
 
         if (horizontal == ELM_NOTIFY_ALIGN_FILL)
           minw = w;
-
         if (vertical == ELM_NOTIFY_ALIGN_FILL)
           minh = h;
-
         
edje_object_size_min_restricted_calc(elm_layout_edje_get(sd->content_area),
                                              &minw, &minh, minw, minh);
+
+        if (!sd->theme_scroll && sd->scroll)
+          {
+             if (minw < sd->max_sc_w)
+               minw = sd->max_sc_w;
+          }
         evas_object_size_hint_min_set(sd->content_area, minw, minh);
 
         if (minh > sd->max_sc_h)
           evas_object_size_hint_min_set(sd->spacer, minw, sd->max_sc_h);
         else
           evas_object_size_hint_min_set(sd->spacer, minw, minh);
-      }
+
+       return;
+     }
+
+   edje_object_size_min_calc(elm_layout_edje_get(sd->main_layout), &minw, 
&minh);
+
+   evas_object_size_hint_min_set(obj, minw, minh);
+   evas_object_size_hint_max_set(obj, -1, -1);
 }
 
 EOLIAN static Eina_Bool
@@ -578,10 +616,54 @@ _layout_change_cb(void *data EINA_UNUSED,
 }
 
 static void
+_create_scroller(Evas_Object *obj)
+{
+   char style[1024];
+
+   ELM_POPUP_DATA_GET(obj, sd);
+
+   //table
+   sd->tbl = elm_table_add(sd->main_layout);
+   evas_object_event_callback_add(sd->tbl, EVAS_CALLBACK_DEL,
+                                  _on_table_del, obj);
+   if (!sd->scroll)
+     {
+        eo_do(sd->content_area, elm_obj_container_content_set(CONTENT_PART, 
sd->tbl));
+        eo_do(sd->main_layout, elm_obj_container_content_set(CONTENT_PART, 
sd->content_area));
+     }
+
+   //spacer
+   sd->spacer = evas_object_rectangle_add(evas_object_evas_get(obj));
+   evas_object_color_set(sd->spacer, 0, 0, 0, 0);
+   elm_table_pack(sd->tbl, sd->spacer, 0, 0, 1, 1);
+
+   //Scroller
+   sd->scr = elm_scroller_add(sd->tbl);
+   if (!sd->scroll)
+     {
+        snprintf(style, sizeof(style), "popup/%s", elm_widget_style_get(obj));
+        elm_object_style_set(sd->scr, style);
+     }
+   else
+     elm_object_style_set(sd->scr, "popup/no_inset_shadow");
+   evas_object_size_hint_weight_set(sd->scr, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(sd->scr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_scroller_policy_set(sd->scr, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_AUTO);
+   elm_scroller_content_min_limit(sd->scr, EINA_TRUE, EINA_FALSE);
+   elm_scroller_bounce_set(sd->scr, EINA_FALSE, EINA_TRUE);
+   evas_object_event_callback_add(sd->scr, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+                                  _size_hints_changed_cb, obj);
+   elm_table_pack(sd->tbl, sd->scr, 0, 0, 1, 1);
+   evas_object_show(sd->scr);
+}
+
+static void
 _list_add(Evas_Object *obj)
 {
    ELM_POPUP_DATA_GET(obj, sd);
 
+   if (!sd->scroll)
+     _create_scroller(obj);
    //Box
    sd->box = elm_box_add(sd->scr);
    evas_object_size_hint_weight_set(sd->box, EVAS_HINT_EXPAND, 0.0);
@@ -879,7 +961,13 @@ _content_text_set(Evas_Object *obj,
         _items_remove(sd);
         _list_del(sd);
      }
-   else elm_object_content_set(sd->scr, sd->content_area);
+   else
+     {
+        if (!sd->scroll)
+          eo_do(sd->main_layout, elm_obj_container_content_set(CONTENT_PART, 
sd->content_area));
+        else
+          elm_object_content_set(sd->scr, sd->content_area);
+     }
    if (!text) goto end;
 
    if (sd->text_content_obj)
@@ -1017,7 +1105,11 @@ _content_set(Evas_Object *obj,
    sd->content = content;
    if (content)
      {
-        elm_object_content_set(sd->scr, sd->content_area);
+        if (!sd->scroll)
+          eo_do(sd->main_layout, elm_obj_container_content_set
+                (CONTENT_PART, sd->content_area));
+        else
+          elm_object_content_set(sd->scr, sd->content_area);
 
         eo_do(sd->content_area, elm_obj_container_content_set
           (CONTENT_PART, content));
@@ -1361,35 +1453,6 @@ _elm_popup_elm_widget_event(Eo *obj, Elm_Popup_Data *_pd 
EINA_UNUSED, Evas_Objec
    return EINA_TRUE;
 }
 
-static void
-_create_scroller(Evas_Object *obj)
-{
-   ELM_POPUP_DATA_GET(obj, sd);
-
-   //table
-   sd->tbl = elm_table_add(sd->main_layout);
-   evas_object_event_callback_add(sd->tbl, EVAS_CALLBACK_DEL,
-                                  _on_table_del, obj);
-
-   //spacer
-   sd->spacer = evas_object_rectangle_add(evas_object_evas_get(obj));
-   evas_object_color_set(sd->spacer, 0, 0, 0, 0);
-   elm_table_pack(sd->tbl, sd->spacer, 0, 0, 1, 1);
-
-   //Scroller
-   sd->scr = elm_scroller_add(sd->tbl);
-   elm_object_style_set(sd->scr, "popup/no_inset_shadow");
-   evas_object_size_hint_weight_set(sd->scr, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
-   evas_object_size_hint_align_set(sd->scr, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_scroller_policy_set(sd->scr, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_AUTO);
-   elm_scroller_content_min_limit(sd->scr, EINA_TRUE, EINA_FALSE);
-   elm_scroller_bounce_set(sd->scr, EINA_FALSE, EINA_TRUE);
-   evas_object_event_callback_add(sd->scr, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
-                                  _size_hints_changed_cb, obj);
-   elm_table_pack(sd->tbl, sd->scr, 0, 0, 1, 1);
-   evas_object_show(sd->scr);
-}
-
 EOLIAN static void
 _elm_popup_evas_object_smart_add(Eo *obj, Elm_Popup_Data *priv)
 {
@@ -1415,9 +1478,6 @@ _elm_popup_evas_object_smart_add(Eo *obj, Elm_Popup_Data 
*priv)
                              elm_widget_style_get(obj)))
      CRI("Failed to set layout!");
 
-   _create_scroller(obj);
-   elm_layout_content_set(priv->main_layout, "elm.swallow.content", priv->tbl);
-
    elm_object_content_set(priv->notify, priv->main_layout);
 
    evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _on_show, NULL);
@@ -1437,7 +1497,7 @@ _elm_popup_evas_object_smart_add(Eo *obj, Elm_Popup_Data 
*priv)
    else
      evas_object_event_callback_add
         (priv->content_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
-         _size_hints_changed_cb, obj);
+         _size_hints_changed_cb, priv->main_layout);
 
    priv->content_text_wrap_type = ELM_WRAP_MIXED;
    eo_do(priv->notify, eo_event_callback_add
@@ -1449,6 +1509,8 @@ _elm_popup_evas_object_smart_add(Eo *obj, Elm_Popup_Data 
*priv)
    elm_widget_can_focus_set(obj, EINA_TRUE);
    elm_widget_can_focus_set(priv->main_layout, EINA_TRUE);
 
+   _populate_theme_scroll(priv);
+
    _visuals_set(obj);
 }
 
@@ -1708,6 +1770,46 @@ _elm_popup_item_append(Eo *obj, Elm_Popup_Data *sd, 
const char *label, Evas_Obje
    return eo_it;
 }
 
+EOLIAN void
+_elm_popup_scrollable_set(Eo *obj, Elm_Popup_Data *pd, Eina_Bool scroll)
+{
+   scroll = !!scroll;
+   if (pd->scroll == scroll) return;
+   pd->scroll = scroll;
+
+   if (!pd->scr)
+     _create_scroller(obj);
+   else
+     {
+        elm_layout_content_unset(pd->scr, "elm.swallow.content");
+        ELM_SAFE_FREE(pd->tbl, evas_object_del);
+        _create_scroller(obj);
+     }
+
+   if (!pd->scroll)
+     {
+        eo_do(pd->content_area, elm_obj_container_content_set(CONTENT_PART, 
pd->tbl));
+        eo_do(pd->main_layout, elm_obj_container_content_set(CONTENT_PART, 
pd->content_area));
+        if (pd->theme_scroll)
+          elm_layout_signal_emit(pd->content_area, "elm,scroll,disable", 
"elm");
+     }
+   else
+     {
+        eo_do(pd->main_layout, elm_obj_container_content_set(CONTENT_PART, 
pd->tbl));
+        if (pd->theme_scroll)
+          elm_layout_signal_emit(pd->content_area, "elm,scroll,enable", "elm");
+     }
+
+   _scroller_size_calc(obj);
+   elm_layout_sizing_eval(obj);
+}
+
+EOLIAN Eina_Bool
+_elm_popup_scrollable_get(Eo *obj EINA_UNUSED, Elm_Popup_Data *pd)
+{
+   return pd->scroll;
+}
+
 static void
 _elm_popup_class_constructor(Eo_Class *klass)
 {
diff --git a/src/lib/elm_popup.eo b/src/lib/elm_popup.eo
index 9ce41e5..38bea7e 100644
--- a/src/lib/elm_popup.eo
+++ b/src/lib/elm_popup.eo
@@ -116,6 +116,27 @@ class Elm.Popup (Elm.Layout, 
Elm_Interface_Atspi_Widget_Action)
             timeout: double; [[The timeout in seconds.]]
          }
       }
+      @property scrollable {
+         set {
+            [[Enable or disable scroller in popup content area
+
+              Normally content area does not contain scroller.
+
+              @since 1.15
+            ]]
+         }
+         get {
+            [[Get the scrollable state of popup content area
+
+              Normally content area does not contain scroller.
+
+              @since 1.15
+            ]]
+         }
+         values {
+            scroll: bool; [[$true if it is to be scrollable, $false 
otherwise.]]
+         }
+      }
       item_append {
          [[Add a new item to a Popup object
 
diff --git a/src/lib/elm_widget_popup.h b/src/lib/elm_widget_popup.h
index 6ffee43..e0669c4 100644
--- a/src/lib/elm_widget_popup.h
+++ b/src/lib/elm_widget_popup.h
@@ -53,6 +53,8 @@ struct _Elm_Popup_Data
 
    Eina_Bool             visible : 1;
    Eina_Bool             scr_size_recalc : 1;
+   Eina_Bool             scroll : 1;
+   Eina_Bool             theme_scroll : 1;
 };
 
 typedef struct _Elm_Popup_Item_Data Elm_Popup_Item_Data;

-- 


Reply via email to