discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=850f5b40f8235ef05b32488df6182fb4fda2d7e2

commit 850f5b40f8235ef05b32488df6182fb4fda2d7e2
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 37b23ebd4..b75c9a896 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -2059,7 +2059,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)
      {
@@ -2067,8 +2066,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