summaryrefslogtreecommitdiff
path: root/src/lib/elementary/efl_ui_popup_alert_text.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elementary/efl_ui_popup_alert_text.c')
-rw-r--r--src/lib/elementary/efl_ui_popup_alert_text.c189
1 files changed, 140 insertions, 49 deletions
diff --git a/src/lib/elementary/efl_ui_popup_alert_text.c b/src/lib/elementary/efl_ui_popup_alert_text.c
index 74e77833a6..232cb7fe82 100644
--- a/src/lib/elementary/efl_ui_popup_alert_text.c
+++ b/src/lib/elementary/efl_ui_popup_alert_text.c
@@ -15,15 +15,13 @@
static void
_scroller_sizing_eval(Eo *obj, Efl_Ui_Popup_Alert_Text_Data *pd, Eina_Size2D min)
{
- pd->is_sizing_eval = EINA_TRUE;
-
Eina_Rect geom = efl_gfx_geometry_get(obj);
int cur_minw, cur_max_scroll_w;
- if (min.w > pd->max_minw)
+ if (min.w > pd->message_minw)
cur_minw = min.w;
else
- cur_minw = pd->max_minw;
+ cur_minw = pd->message_minw;
if (min.w > pd->max_scroll_w)
cur_max_scroll_w = min.w;
@@ -32,66 +30,159 @@ _scroller_sizing_eval(Eo *obj, Efl_Ui_Popup_Alert_Text_Data *pd, Eina_Size2D min
if (pd->is_expandable_w && !pd->is_expandable_h)
{
- if ((pd->max_scroll_w > -1) && (cur_minw >= cur_max_scroll_w))
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(cur_max_scroll_w, geom.h));
+ if (pd->max_scroll_w > -1)
+ {
+ if (cur_minw > cur_max_scroll_w)
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_max_scroll_w, geom.h));
+ }
+ else
+ {
+ pd->is_sizing_eval = EINA_TRUE;
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, geom.h));
+ pd->is_sizing_eval = EINA_FALSE;
+ }
+ }
else
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(cur_minw, geom.h));
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, geom.h));
+ }
}
else if (!pd->is_expandable_w && pd->is_expandable_h)
{
- if (pd->pre_minh != -1)
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(geom.w, pd->max_scroll_h));
- else if ((pd->max_scroll_h > -1) && (min.h >= pd->max_scroll_h))
+ if (pd->max_scroll_h > -1)
{
- elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(geom.w, pd->max_scroll_h));
- pd->pre_minh = pd->max_scroll_h;
+ if (min.h > pd->max_scroll_h)
+ {
+ pd->is_sizing_eval = EINA_TRUE;
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(geom.w, pd->max_scroll_h));
+ pd->is_sizing_eval = EINA_FALSE;
+ }
+ else
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(geom.w, min.h));
+ }
}
else
{
- elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(geom.w, min.h));
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(geom.w, min.h));
}
}
else if (pd->is_expandable_w && pd->is_expandable_h)
{
- if ((pd->max_scroll_w > -1) && (cur_minw <= cur_max_scroll_w))
+ /*
+ Eina_Bool wdir, hdir;
+ wdir = hdir = EINA_FALSE;
+
+ ERR("[CJH] cur_max_scroll_w(%d) cur_minw(%d)", cur_max_scroll_w, cur_minw);
+ ERR("[CJH] pd->max_scroll_h(%d) min.h(%d)", pd->max_scroll_h, min.h);
+ if ((cur_max_scroll_w > -1) && (cur_minw > cur_max_scroll_w))
+ wdir = 1;
+ if ((pd->max_scroll_h > -1) && (min.h > pd->max_scroll_h))
+ hdir = 1;
+
+ if (wdir && !hdir)
{
elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(cur_minw, min.h));
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_max_scroll_w, min.h));
}
- else if ((pd->max_scroll_w > -1) && (cur_minw > cur_max_scroll_w))
+ else if (!wdir && hdir)
{
-
- if (pd->pre_minh != -1)
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(cur_max_scroll_w, pd->max_scroll_h));
- else if (min.h >= pd->max_scroll_h)
- {
- elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(cur_max_scroll_w, pd->max_scroll_h));
- pd->pre_minh = pd->max_scroll_h;
- }
- else
- {
- elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(cur_max_scroll_w, min.h));
- }
+ pd->is_sizing_eval = EINA_TRUE;
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, pd->max_scroll_h));
+ pd->is_sizing_eval = EINA_FALSE;
}
- else
+ else if (wdir && hdir)
{
- elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
- efl_gfx_size_set(efl_super(obj, MY_CLASS), EINA_SIZE2D(cur_minw, min.h));
+ pd->is_sizing_eval = EINA_TRUE;
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_max_scroll_w, pd->max_scroll_h));
+ pd->is_sizing_eval = EINA_FALSE;
}
- }
+ */
+ Eina_Bool wdir, hdir;
+ wdir = hdir = EINA_FALSE;
- pd->is_sizing_eval = EINA_FALSE;
-}
+ if (cur_minw > cur_max_scroll_w)
+ wdir = EINA_TRUE;
+ if (min.h > pd->max_scroll_h)
+ hdir = EINA_TRUE;
-static void
-_efl_ui_popup_alert_text_efl_gfx_size_set(Eo *obj, Efl_Ui_Popup_Alert_Text_Data *pd, Eina_Size2D size)
-{
- evas_object_resize(pd->message, size.w, size.h);
- efl_gfx_size_set(efl_super(obj, MY_CLASS), size);
+ if (cur_max_scroll_w <= -1)
+ {
+ // -1 !-1
+ if (pd->max_scroll_h > -1)
+ {
+ if (hdir)
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, pd->max_scroll_h));
+ }
+ else
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, min.h));
+ }
+ }
+ // -1 -1
+ else
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, min.h));
+ }
+ }
+ else if (pd->max_scroll_h <= -1)
+ {
+ // !-1 -1
+ if (wdir)
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_max_scroll_w, min.h));
+ }
+ else
+ {
+ pd->is_sizing_eval = EINA_TRUE;
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, min.h));
+ pd->is_sizing_eval = EINA_FALSE;
+ }
+ }
+ else if ((cur_max_scroll_w > -1) && (pd->max_scroll_h > -1))
+ {
+ // !-1 !-1
+ if (wdir && hdir)
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_max_scroll_w, pd->max_scroll_h));
+ }
+ else if (wdir && !hdir)
+ {
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_max_scroll_w, min.h));
+ }
+ else if (!wdir && hdir)
+ {
+ pd->is_sizing_eval = EINA_TRUE;
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_FALSE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, pd->max_scroll_h));
+ pd->is_sizing_eval = EINA_FALSE;
+ }
+ else
+ {
+ pd->is_sizing_eval = EINA_TRUE;
+ elm_scroller_content_min_limit(pd->scroller, EINA_FALSE, EINA_TRUE);
+ efl_gfx_size_set(obj, EINA_SIZE2D(cur_minw, min.h));
+ pd->is_sizing_eval = EINA_FALSE;
+ }
+ }
+ }
}
EOLIAN static void
@@ -101,10 +192,10 @@ _efl_ui_popup_alert_text_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Popup_Alert_Text
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
Evas_Coord minw = -1, minh = -1;
-
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
edje_object_size_min_restricted_calc(wd->resize_obj, &minw, &minh, minw, minh);
efl_gfx_size_hint_min_set(obj, EINA_SIZE2D(minw, minh));
+ ERR("[CJH] minw(%d) minh(%d)", minw, minh);
_scroller_sizing_eval(obj, pd, EINA_SIZE2D(minw, minh));
}
@@ -140,12 +231,12 @@ _efl_ui_popup_alert_text_text_set(Eo *obj, Efl_Ui_Popup_Alert_Text_Data *pd, con
efl_content_set(efl_part(pd->scroller, "default"), pd->message);
}
- pd->max_minw = -1;
+ pd->message_minw = -1;
pd->pre_minh = -1;
elm_object_text_set(pd->message, label);
elm_label_line_wrap_set(pd->message, ELM_WRAP_NONE);
Eina_Size2D message_size = efl_gfx_size_hint_combined_min_get(pd->message);
- pd->max_minw = message_size.w;
+ pd->message_minw = message_size.w;
elm_label_line_wrap_set(pd->message, ELM_WRAP_MIXED);
elm_layout_sizing_eval(obj);
@@ -192,10 +283,10 @@ _efl_ui_popup_alert_text_expandable_set(Eo *obj EINA_UNUSED, Efl_Ui_Popup_Alert_
if (pd->message)
{
pd->pre_minh = -1;
- pd->max_minw = -1;
+ pd->message_minw = -1;
elm_label_line_wrap_set(pd->message, ELM_WRAP_NONE);
Eina_Size2D message_size = efl_gfx_size_hint_combined_min_get(pd->message);
- pd->max_minw = message_size.w;
+ pd->message_minw = message_size.w;
elm_label_line_wrap_set(pd->message, ELM_WRAP_MIXED);
}
@@ -230,7 +321,7 @@ _efl_ui_popup_alert_text_efl_object_constructor(Eo *obj,
efl_content_set(efl_part(efl_super(obj, MY_CLASS), "elm.swallow.content"),
pd->scroller);
- pd->max_minw = -1;
+ pd->message_minw = -1;
pd->pre_minh = -1;
pd->max_scroll_w = -1;
pd->max_scroll_h = -1;