summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinyong Park <j4939.park@samsung.com>2016-05-17 10:22:07 +0900
committerJaehwan Kim <jae.hwan.kim@samsung.com>2016-05-17 10:22:07 +0900
commit1b765359ee4603b3b1713ca6973cecc072617b72 (patch)
tree15c00e7cdad3db751fd376a81e92f2ef46f6bf20
parent988fe37232c62280400d574cd4f4750a93a6e484 (diff)
downloadefl-1b765359ee4603b3b1713ca6973cecc072617b72.tar.gz
popup: add popup default scrollable flag config for other profiles.
Summary: The default scrollable flag of popup can be different in each profiles. So I added the scrollable configuration of popup. @feature Test Plan: 1. Before 1) elementary_test -to popup 2) resize window to smaller 3) Click 15th item, "popup-center-title + genlist content + 1 button" 4) Then popup will show, but its list is very long, only small part of popup could be shown. 2. After Patch 1) change "popup_scroller" value to 1 in base.src, then run elementary_test -to popup or ELM_POPUP_SCROLLABLE=1 elemantary_test -to popup 2) resize window to smaller 3) Click 15th item, "popup-center-title + genlist content + 1 button" 4) Then popup will show, popup's genlist will be in scroller, so entire popup can be shown. Reviewers: jaehwan, id213sin, cedric, raster, singh.amitesh, SanghyeonLee, Hermet Subscribers: Hermet, minkyu, herb, jpeg Differential Revision: https://phab.enlightenment.org/D3856
-rw-r--r--config/default/base.src.in1
-rw-r--r--config/mobile/base.src.in1
-rw-r--r--config/standard/base.src.in1
-rw-r--r--src/bin/elementary/test_popup.c41
-rw-r--r--src/lib/elementary/elc_popup.c3
-rw-r--r--src/lib/elementary/elm_config.c16
-rw-r--r--src/lib/elementary/elm_config.h22
-rw-r--r--src/lib/elementary/elm_priv.h1
8 files changed, 63 insertions, 23 deletions
diff --git a/config/default/base.src.in b/config/default/base.src.in
index b7270b328a..bd2ec066c6 100644
--- a/config/default/base.src.in
+++ b/config/default/base.src.in
@@ -98,6 +98,7 @@ group "Elm_Config" struct {
value "naviframe_prev_btn_auto_pushed" uchar: 1;
value "popup_horizontal_align" double: 0.5;
value "popup_vertical_align" double: 0.5;
+ value "popup_scrollable" uchar: 0;
value "spinner_min_max_filter_enable" uchar: 0;
group "color_palette" list {
group "Elm_Custom_Palette" struct {
diff --git a/config/mobile/base.src.in b/config/mobile/base.src.in
index ace09b7aa3..d753de513e 100644
--- a/config/mobile/base.src.in
+++ b/config/mobile/base.src.in
@@ -102,6 +102,7 @@ group "Elm_Config" struct {
value "naviframe_prev_btn_auto_pushed" uchar: 1;
value "popup_horizontal_align" double: 0.5;
value "popup_vertical_align" double: 0.5;
+ value "popup_scrollable" uchar: 0;
value "spinner_min_max_filter_enable" uchar: 1;
group "color_palette" list {
group "Elm_Custom_Palette" struct {
diff --git a/config/standard/base.src.in b/config/standard/base.src.in
index 4b81b87670..cf0d7736d4 100644
--- a/config/standard/base.src.in
+++ b/config/standard/base.src.in
@@ -99,6 +99,7 @@ group "Elm_Config" struct {
value "naviframe_prev_btn_auto_pushed" uchar: 1;
value "popup_horizontal_align" double: 0.5;
value "popup_vertical_align" double: 0.5;
+ value "popup_scrollable" uchar: 0;
value "spinner_min_max_filter_enable" uchar: 0;
group "color_palette" list {
group "Elm_Custom_Palette" struct {
diff --git a/src/bin/elementary/test_popup.c b/src/bin/elementary/test_popup.c
index 3ab08e1722..dc1274ec82 100644
--- a/src/bin/elementary/test_popup.c
+++ b/src/bin/elementary/test_popup.c
@@ -306,8 +306,7 @@ _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);
+ elm_popup_scrollable_set(popup, is_popup_scroll);
// popup title
elm_object_part_text_set(popup, "title,text", "Title");
@@ -368,8 +367,7 @@ _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);
+ elm_popup_scrollable_set(popup, is_popup_scroll);
// popup title
elm_object_part_text_set(popup, "title,text", "Title");
@@ -441,8 +439,7 @@ _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);
+ elm_popup_scrollable_set(popup, is_popup_scroll);
evas_object_smart_callback_add(popup, "block,clicked",
_restack_block_clicked_cb, NULL);
@@ -486,8 +483,7 @@ _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_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.");
@@ -535,8 +531,7 @@ _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);
+ elm_popup_scrollable_set(popup, is_popup_scroll);
// popup title
elm_object_part_text_set(popup, "title,text",
@@ -571,8 +566,7 @@ _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_popup_scrollable_set(popup, is_popup_scroll);
elm_object_style_set(popup, "transparent");
elm_object_text_set(popup, "This Popup has transparent background");
@@ -595,8 +589,7 @@ _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_popup_scrollable_set(popup, is_popup_scroll);
elm_object_style_set(popup, "transparent");
elm_object_text_set(popup, "This Popup has transparent background");
@@ -638,8 +631,7 @@ _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_popup_scrollable_set(popup, is_popup_scroll);
elm_object_part_text_set(popup, "title,text", "Title");
// list as a popup content
@@ -670,8 +662,7 @@ _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_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();
@@ -683,7 +674,7 @@ _popup_center_title_genlist_content_1button_cb(void *data, Evas_Object *obj EINA
// genlist as a popup content
genlist = elm_genlist_add(popup);
- elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ elm_genlist_mode_set(genlist, ELM_LIST_EXPAND);
elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
for (i = 0; i < 10; i++)
@@ -718,8 +709,7 @@ _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_popup_scrollable_set(popup, is_popup_scroll);
elm_object_style_set(popup, "subpopup");
elm_object_part_text_set(popup, "title,text", "Title");
@@ -754,8 +744,7 @@ _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);
+ 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);
@@ -929,6 +918,12 @@ test_popup(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
evas_object_show(check);
evas_object_smart_callback_add(check, "changed", _popup_scroll_cb, NULL);
+ if (elm_config_popup_scrollable_get())
+ {
+ elm_check_state_set(check, EINA_TRUE);
+ is_popup_scroll = EINA_TRUE;
+ }
+
evas_object_resize(win, 480, 400);
evas_object_show(win);
}
diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c
index 22777f0c13..db93b01c3f 100644
--- a/src/lib/elementary/elc_popup.c
+++ b/src/lib/elementary/elc_popup.c
@@ -1552,6 +1552,9 @@ _elm_popup_evas_object_smart_add(Eo *obj, Elm_Popup_Data *priv)
_populate_theme_scroll(priv);
_visuals_set(obj);
+
+ if (_elm_config->popup_scrollable)
+ elm_popup_scrollable_set(obj, _elm_config->popup_scrollable);
}
static void
diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c
index 36ee5c7816..c42177ddc3 100644
--- a/src/lib/elementary/elm_config.c
+++ b/src/lib/elementary/elm_config.c
@@ -499,6 +499,7 @@ _desc_init(void)
ELM_CONFIG_VAL(D, T, naviframe_prev_btn_auto_pushed, T_UCHAR);
ELM_CONFIG_VAL(D, T, popup_horizontal_align, T_DOUBLE);
ELM_CONFIG_VAL(D, T, popup_vertical_align, T_DOUBLE);
+ ELM_CONFIG_VAL(D, T, popup_scrollable, T_UCHAR);
ELM_CONFIG_VAL(D, T, spinner_min_max_filter_enable, T_UCHAR);
ELM_CONFIG_VAL(D, T, icon_theme, T_STRING);
#undef T
@@ -1826,6 +1827,7 @@ _config_load(void)
_elm_config->popup_horizontal_align = 0.5;
_elm_config->popup_vertical_align = 0.5;
_elm_config->icon_theme = eina_stringshare_add(ELM_CONFIG_ICON_THEME_ELEMENTARY);
+ _elm_config->popup_scrollable = EINA_FALSE;
}
static void
@@ -2539,6 +2541,8 @@ _env_get(void)
if (s) _elm_config->popup_horizontal_align = _elm_atof(s);
s = getenv("ELM_POPUP_VERTICAL_ALIGN");
if (s) _elm_config->popup_vertical_align = _elm_atof(s);
+ s = getenv("ELM_POPUP_SCROLLABLE");
+ if (s) _elm_config->popup_scrollable = atoi(s);
}
static void
@@ -3670,6 +3674,18 @@ elm_config_window_auto_focus_animate_set(Eina_Bool enable)
_elm_config->win_auto_focus_animate = enable;
}
+EAPI Eina_Bool
+elm_config_popup_scrollable_get(void)
+{
+ return _elm_config->popup_scrollable;
+}
+
+EAPI void
+elm_config_popup_scrollable_set(Eina_Bool scrollable)
+{
+ _elm_config->popup_scrollable = scrollable;
+}
+
EAPI void
elm_config_all_flush(void)
{
diff --git a/src/lib/elementary/elm_config.h b/src/lib/elementary/elm_config.h
index 558d8596b5..e6238a743c 100644
--- a/src/lib/elementary/elm_config.h
+++ b/src/lib/elementary/elm_config.h
@@ -2034,6 +2034,28 @@ EAPI Eina_Bool elm_config_window_auto_focus_animate_get(void);
EAPI void elm_config_window_auto_focus_animate_set(Eina_Bool enable);
/**
+ * Get the popup scrollable flag
+ *
+ * If scrollable is true, popup's contents is wrapped in a scroller container
+ * in order to popup shouldn't be larger than its parent.
+ *
+ * @return The enabled state for popup scroll
+ * @since 1.18
+ */
+EAPI Eina_Bool elm_config_popup_scrollable_get(void);
+
+/**
+ * Set the popup scrollable flag
+ *
+ * If scrollable is true, popup's contents is wrapped in a scroller container
+ * in order to popup shouldn't be larger than its parent.
+ *
+ * @param enable the popup scroll
+ * @since 1.18
+ */
+EAPI void elm_config_popup_scrollable_set(Eina_Bool scrollable);
+
+/**
* @defgroup ATSPI AT-SPI2 Accessibility
* @ingroup Elementary
*
diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h
index 21c510f3cc..b3e24a0f3b 100644
--- a/src/lib/elementary/elm_priv.h
+++ b/src/lib/elementary/elm_priv.h
@@ -247,6 +247,7 @@ struct _Elm_Config
Elm_Slider_Indicator_Visible_Mode slider_indicator_visible_mode; /**< this sets the slider indicator visible mode */
double popup_horizontal_align;
double popup_vertical_align;
+ Eina_Bool popup_scrollable;
int toolbar_shrink_mode;
unsigned char fileselector_expand_enable;
unsigned char fileselector_double_tap_navigation_enable;