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

-- 


Reply via email to