From b93d0bd31cb9d4238b741abd6169abc73a1e158a Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Tue, 20 Sep 2011 14:53:44 +0900 Subject: [PATCH] Prevent Detected Bug Fix: DEADCODE Change-Id: I22477f1cb045430eea3ccbda19f0e090c6b7724e --- src/lib/elc_ctxpopup.c | 105 ++++++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 50 deletions(-) diff --git a/src/lib/elc_ctxpopup.c b/src/lib/elc_ctxpopup.c index a890dec..c667b55 100644 --- a/src/lib/elc_ctxpopup.c +++ b/src/lib/elc_ctxpopup.c @@ -407,60 +407,65 @@ _calc_base_geometry(Evas_Object *obj, Evas_Coord_Rectangle *rect) //In this case, all directions are invalid because of lack of space. if (idx == 4) { - //TODO 1: Find the largest space direction. Evas_Coord length[2]; - length[0] = pos.y - hover_area.y; - length[1] = (hover_area.y + hover_area.h) - pos.y; - - if (length[0] > length[1]) - idx = ELM_CTXPOPUP_DIRECTION_UP; + if(!wd->horizontal) + { + length[0] = pos.y - hover_area.y; + length[1] = (hover_area.y + hover_area.h) - pos.y; + + // ELM_CTXPOPUP_DIRECTION_UP + if (length[0] > length[1]) + { + _adjust_pos_x(&pos, &base_size, &hover_area); + pos.y -= base_size.y; + arrow = ELM_CTXPOPUP_DIRECTION_UP; + if (pos.y < (hover_area.y + arrow_size.y)) + { + base_size.y -= ((hover_area.y + arrow_size.y) - pos.y); + pos.y = hover_area.y + arrow_size.y; + } + } + //ELM_CTXPOPUP_DIRECTION_DOWN + else + { + _adjust_pos_x(&pos, &base_size, &hover_area); + arrow = ELM_CTXPOPUP_DIRECTION_DOWN; + if ((pos.y + arrow_size.y + base_size.y) > + (hover_area.y + hover_area.h)) + base_size.y -= + ((pos.y + arrow_size.y + base_size.y) - + (hover_area.y + hover_area.h)); + } + } else - idx = ELM_CTXPOPUP_DIRECTION_DOWN; - - //TODO 2: determine x , y - switch (idx) { - case ELM_CTXPOPUP_DIRECTION_UP: - _adjust_pos_x(&pos, &base_size, &hover_area); - pos.y -= base_size.y; - arrow = ELM_CTXPOPUP_DIRECTION_DOWN; - if (pos.y < hover_area.y + arrow_size.y) - { - base_size.y -= ((hover_area.y + arrow_size.y) - pos.y); - pos.y = hover_area.y + arrow_size.y; - } - break; - case ELM_CTXPOPUP_DIRECTION_LEFT: - _adjust_pos_y(&pos, &base_size, &hover_area); - pos.x -= base_size.x; - arrow = ELM_CTXPOPUP_DIRECTION_RIGHT; - if (pos.x < hover_area.x + arrow_size.x) - { - base_size.x -= ((hover_area.x + arrow_size.x) - pos.x); - pos.x = hover_area.x + arrow_size.x; - } - break; - case ELM_CTXPOPUP_DIRECTION_RIGHT: - _adjust_pos_y(&pos, &base_size, &hover_area); - arrow = ELM_CTXPOPUP_DIRECTION_LEFT; - if (pos.x + arrow_size.x + base_size.x > - hover_area.x + hover_area.w) - base_size.x -= - ((pos.x + arrow_size.x + base_size.x) - - (hover_area.x + hover_area.w)); - break; - case ELM_CTXPOPUP_DIRECTION_DOWN: - _adjust_pos_x(&pos, &base_size, &hover_area); - arrow = ELM_CTXPOPUP_DIRECTION_UP; - if (pos.y + arrow_size.y + base_size.y > - hover_area.y + hover_area.h) - base_size.y -= - ((pos.y + arrow_size.y + base_size.y) - - (hover_area.y + hover_area.h)); - break; - default: - break; + length[0] = pos.x - hover_area.x; + length[1] = (hover_area.x + hover_area.w) - pos.x; + + //ELM_CTXPOPUP_DIRECTION_LEFT + if (length[0] > length[1]) + { + _adjust_pos_y(&pos, &base_size, &hover_area); + pos.x -= base_size.x; + arrow = ELM_CTXPOPUP_DIRECTION_LEFT; + if (pos.x < (hover_area.x + arrow_size.x)) + { + base_size.x -= ((hover_area.x + arrow_size.x) - pos.x); + pos.x = hover_area.x + arrow_size.x; + } + } + //ELM_CTXPOPUP_DIRECTION_RIGHT + else + { + _adjust_pos_y(&pos, &base_size, &hover_area); + arrow = ELM_CTXPOPUP_DIRECTION_RIGHT; + if (pos.x + (arrow_size.x + base_size.x) > + hover_area.x + hover_area.w) + base_size.x -= + ((pos.x + arrow_size.x + base_size.x) - + (hover_area.x + hover_area.w)); + } } } -- 2.7.4