discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=673195a6ac17ff6a2f7b2606982b5711c0f016d9

commit 673195a6ac17ff6a2f7b2606982b5711c0f016d9
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Aug 25 14:47:04 2017 -0400

    handle gadget ctxpopup placement for desktop gadgets
    
    fix T5877
---
 src/bin/e_gadget.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index f1e0f18eb..21cce9664 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -1615,7 +1615,6 @@ e_gadget_util_ctxpopup_place(Evas_Object *g, Evas_Object 
*ctx, Evas_Object *pos_
         first = ELM_CTXPOPUP_DIRECTION_UP, second = 
ELM_CTXPOPUP_DIRECTION_DOWN;
         if (zgc->site->anchor & E_GADGET_SITE_ANCHOR_TOP)
           first = ELM_CTXPOPUP_DIRECTION_DOWN, second = 
ELM_CTXPOPUP_DIRECTION_UP;
-        elm_ctxpopup_direction_priority_set(ctx, first, second, 0, 0);
      }
    else if (zgc->site->orient == E_GADGET_SITE_ORIENT_VERTICAL)
      {
@@ -1623,8 +1622,27 @@ e_gadget_util_ctxpopup_place(Evas_Object *g, Evas_Object 
*ctx, Evas_Object *pos_
         first = ELM_CTXPOPUP_DIRECTION_LEFT, second = 
ELM_CTXPOPUP_DIRECTION_RIGHT;
         if (zgc->site->anchor & E_GADGET_SITE_ANCHOR_LEFT)
           first = ELM_CTXPOPUP_DIRECTION_RIGHT, second = 
ELM_CTXPOPUP_DIRECTION_LEFT;
-        elm_ctxpopup_direction_priority_set(ctx, first, second, 0, 0);
      }
+   else
+     {
+        int zx, zy, zw, zh;
+        e_zone_useful_geometry_get(e_comp_object_util_zone_get(pos_obj ?: g), 
&zx, &zy, &zw, &zh);
+        if (x < zx + (zw / 2))
+          {
+             second = ELM_CTXPOPUP_DIRECTION_RIGHT;
+             x += w / 2;
+          }
+        else
+          second = ELM_CTXPOPUP_DIRECTION_LEFT;
+        if (y < zy + (zh / 2))
+          {
+             first = ELM_CTXPOPUP_DIRECTION_DOWN;
+             y += h;
+          }
+        else
+          first = ELM_CTXPOPUP_DIRECTION_UP;
+     }
+   elm_ctxpopup_direction_priority_set(ctx, first, second, 0, 0);
    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);

-- 


Reply via email to