discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=3e6f2f1fa77367aea16ef9d796526e30411f0e59

commit 3e6f2f1fa77367aea16ef9d796526e30411f0e59
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Oct 26 10:27:40 2016 -0400

    add workarounds for ctxpopup geometry for use in input shape tiling
    
    ref T4687
---
 src/bin/e_comp.c   |  6 ++++++
 src/bin/e_gadget.c | 13 +++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index d8dcb07..ce3aca0 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -706,6 +706,12 @@ _e_comp_shapes_update_object_shape_comp_helper(Evas_Object 
*o, Eina_Tiler *tb)
    if (_e_comp_shapes_update_object_checker_function_thingy(o)) return;
    SHAPE_INF("OBJ: %p:%s", o, evas_object_name_get(o) ?: 
evas_object_type_get(o));
    evas_object_geometry_get(o, &x, &y, &w, &h);
+   if ((!w) && (!h) && elm_object_widget_check(o))
+     {
+        Evas_Object *content = elm_object_content_get(o);
+        if (content)
+          evas_object_geometry_get(content, &x, &y, &w, &h);
+     }
    eina_tiler_rect_add(tb, &(Eina_Rectangle){x, y, w, h});
    SHAPE_INF("ADD: %d,%d@%dx%d", x, y, w, h);
 }
diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index 51fbf08..cdda721 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -1557,17 +1557,25 @@ _gadget_util_ctxpopup_visibility(void *data 
EINA_UNUSED, Evas *e EINA_UNUSED, Ev
    e_comp_shape_queue();
 }
 
+static void
+_gadget_util_ctxpopup_moveresize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   e_comp_shape_queue();
+}
+
 E_API void
 e_gadget_util_ctxpopup_place(Evas_Object *g, Evas_Object *ctx, Evas_Object 
*pos_obj)
 {
    int x, y, w, h;
    E_Layer layer;
    E_Gadget_Config *zgc;
+   Evas_Object *content;
 
    EINA_SAFETY_ON_NULL_RETURN(g);
    zgc = evas_object_data_get(g, "__e_gadget");
    EINA_SAFETY_ON_NULL_RETURN(zgc);
 
+   content = elm_object_content_get(ctx);
    elm_ctxpopup_hover_parent_set(ctx, e_comp->elm);
    layer = MAX(evas_object_layer_get(pos_obj ?: g), E_LAYER_POPUP);
    evas_object_layer_set(ctx, layer);
@@ -1590,6 +1598,11 @@ e_gadget_util_ctxpopup_place(Evas_Object *g, Evas_Object 
*ctx, Evas_Object *pos_
    evas_object_move(ctx, x, y);
    evas_object_event_callback_add(ctx, EVAS_CALLBACK_SHOW, 
_gadget_util_ctxpopup_visibility, NULL);
    evas_object_event_callback_add(ctx, EVAS_CALLBACK_HIDE, 
_gadget_util_ctxpopup_visibility, NULL);
+   if (content)
+     {
+        evas_object_event_callback_add(content, EVAS_CALLBACK_MOVE, 
_gadget_util_ctxpopup_moveresize, NULL);
+        evas_object_event_callback_add(content, EVAS_CALLBACK_RESIZE, 
_gadget_util_ctxpopup_moveresize, NULL);
+     }
    evas_object_smart_callback_call(zgc->site->layout, "gadget_site_popup", 
ctx);
    if (evas_object_visible_get(ctx))
      e_comp_shape_queue();

-- 


Reply via email to