hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=4e4dd4400ca34c89ec6f97f56c5b9c01d3480756
commit 4e4dd4400ca34c89ec6f97f56c5b9c01d3480756 Author: Mykyta Biliavskyi <m.biliavs...@samsung.com> Date: Tue Jun 9 11:24:20 2015 +0000 Fix candidate popup positioning is wrong. Ctxpopup will not show, if the size of editable area is smaller, than ctxpopup wth content. @fix T2180 --- src/lib/ctxpopup.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/lib/ctxpopup.c b/src/lib/ctxpopup.c index a258e36..c94e0fb 100644 --- a/src/lib/ctxpopup.c +++ b/src/lib/ctxpopup.c @@ -5,6 +5,8 @@ #include <Enventor.h> #include "enventor_private.h" +#define CTXPOPUP_BORDER_SIZE 10 + typedef struct ctxpopup_data_s { Evas_Smart_Cb selected_cb; Evas_Smart_Cb relay_cb; @@ -231,6 +233,10 @@ toggle_layout_set(Evas_Object *ctxpopup, attr_value *attr) Eina_Stringshare *type; Eina_Array_Iterator itr; unsigned int i; + Evas_Coord layout_w = 0, edit_w = 0; + + Evas_Object *edit = elm_object_parent_widget_get(ctxpopup); + evas_object_geometry_get(edit, NULL, NULL, &edit_w, NULL); //Box Evas_Object *box = elm_box_add(ctxpopup); @@ -240,7 +246,7 @@ toggle_layout_set(Evas_Object *ctxpopup, attr_value *attr) evas_object_show(box); //Layout - Evas_Object *layout; + Evas_Object *layout = NULL; EINA_ARRAY_ITER_NEXT(attr->strs, i, type, itr) { layout = toggle_layout_create(box, attr, type, @@ -250,8 +256,14 @@ toggle_layout_set(Evas_Object *ctxpopup, attr_value *attr) } elm_object_content_set(ctxpopup, box); + + Evas_Object *edje = elm_layout_edje_get(layout); + edje_object_size_min_calc(edje, &layout_w, NULL); + evas_object_smart_callback_add(ctxpopup, "dismissed", toggle_dismiss_cb, (void *) attr); + if (edit_w <= layout_w + CTXPOPUP_BORDER_SIZE) + evas_object_del(ctxpopup); } static Evas_Object * @@ -357,6 +369,10 @@ slider_layout_set(Evas_Object *ctxpopup, attr_value *attr, Eina_Bool integer) Eina_Stringshare *type; Eina_Array_Iterator itr; unsigned int i; + Evas_Coord layout_w = 0, edit_w = 0; + + Evas_Object *edit = elm_object_parent_widget_get(ctxpopup); + evas_object_geometry_get(edit, NULL, NULL, &edit_w, NULL); //Box Evas_Object *box = elm_box_add(ctxpopup); @@ -366,7 +382,7 @@ slider_layout_set(Evas_Object *ctxpopup, attr_value *attr, Eina_Bool integer) evas_object_show(box); //Layout - Evas_Object *layout; + Evas_Object *layout = NULL; EINA_ARRAY_ITER_NEXT(attr->strs, i, type, itr) { layout = slider_layout_create(box, attr, type, attr->val[i], integer); @@ -377,6 +393,12 @@ slider_layout_set(Evas_Object *ctxpopup, attr_value *attr, Eina_Bool integer) elm_object_content_set(ctxpopup, box); evas_object_smart_callback_add(ctxpopup, "dismissed", slider_dismiss_cb, (void *) attr); + Evas_Object *edje = elm_layout_edje_get(layout); + edje_object_size_min_calc(edje, &layout_w, NULL); + + if (edit_w <= layout_w + CTXPOPUP_BORDER_SIZE) + evas_object_del(ctxpopup); + } static void --