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); --
