}
EOLIAN static void
-_elm_gengrid_elm_widget_focus_highlight_geometry_get(Eo *obj, Elm_Gengrid_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+_elm_gengrid_elm_widget_focus_highlight_geometry_get(Eo *obj, Elm_Gengrid_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h, Eina_Bool is_next)
{
Evas_Coord ox, oy, oh, ow, item_x = 0, item_y = 0, item_w = 0, item_h = 0;
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
- if (sd->focused_item)
+ if (is_next)
+ {
+ if (sd->focused_item)
+ {
+ evas_object_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
+ elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
+ }
+ }
+ else
{
- evas_object_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
- elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
+ if (sd->prev_focused_item)
+ {
+ evas_object_geometry_get(VIEW(sd->prev_focused_item), &item_x, &item_y, &item_w, &item_h);
+ elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->prev_focused_item), &item_x, &item_y, &item_w, &item_h);
+ }
}
*x = item_x;
}
EOLIAN static void
-_elm_genlist_elm_widget_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+_elm_genlist_elm_widget_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h, Eina_Bool is_next)
{
Evas_Coord ox, oy, oh, item_x = 0, item_y = 0, item_w = 0, item_h = 0;
evas_object_geometry_get(obj, &ox, &oy, NULL, &oh);
- if (sd->focused_item)
+ if (is_next)
+ {
+ if (sd->focused_item)
+ {
+ evas_object_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
+ elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
+ }
+ }
+ else
{
- evas_object_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
- elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->focused_item), &item_x, &item_y, &item_w, &item_h);
+ if (sd->prev_focused_item)
+ {
+ evas_object_geometry_get(VIEW(sd->prev_focused_item), &item_x, &item_y, &item_w, &item_h);
+ elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->prev_focused_item), &item_x, &item_y, &item_w, &item_h);
+ }
}
if (item_y < oy)
}
EOLIAN static void
-_elm_list_elm_widget_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+_elm_list_elm_widget_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, Elm_List_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h, Eina_Bool is_next)
{
- if (sd->focused_item)
+ if (is_next)
{
- _elm_list_item_coordinates_adjust((Elm_List_Item *)sd->focused_item, x, y, w, h);
- elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->focused_item), x, y, w, h);
+ if (sd->focused_item)
+ {
+ _elm_list_item_coordinates_adjust((Elm_List_Item *)sd->focused_item, x, y, w, h);
+ elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->focused_item), x, y, w, h);
+ }
+ }
+ else
+ {
+ if (sd->prev_focused_item)
+ {
+ _elm_list_item_coordinates_adjust((Elm_List_Item *)sd->prev_focused_item, x, y, w, h);
+ elm_widget_focus_highlight_focus_part_geometry_get(VIEW(sd->prev_focused_item), x, y, w, h);
+ }
}
}
}
EOLIAN static void
-_elm_toolbar_elm_widget_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+_elm_toolbar_elm_widget_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h, Eina_Bool is_next)
{
- if (sd->focused_item)
+ if (is_next)
{
- _elm_toolbar_coordinates_adjust
- (sd->focused_item, x, y, w, h);
- elm_widget_focus_highlight_focus_part_geometry_get
- (VIEW(sd->focused_item), x, y, w, h);
+ if (sd->focused_item)
+ {
+ _elm_toolbar_coordinates_adjust
+ (sd->focused_item, x, y, w, h);
+ elm_widget_focus_highlight_focus_part_geometry_get
+ (VIEW(sd->focused_item), x, y, w, h);
+ }
+ }
+ else
+ {
+ if (sd->prev_focused_item)
+ {
+ _elm_toolbar_coordinates_adjust
+ (sd->prev_focused_item, x, y, w, h);
+ elm_widget_focus_highlight_focus_part_geometry_get
+ (VIEW(sd->prev_focused_item), x, y, w, h);
+ }
}
}
}
EOLIAN static void
-_elm_widget_focus_highlight_geometry_get(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+_elm_widget_focus_highlight_geometry_get(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h, Eina_Bool is_next)
{
+ (void)is_next;
+
+
evas_object_geometry_get(obj, x, y, w, h);
elm_widget_focus_highlight_focus_part_geometry_get(sd->resize_obj, x, y, w, h);
}
@in Evas_Coord *y;
@in Evas_Coord *w;
@in Evas_Coord *h;
+ @in Eina_Bool is_next;
}
}
activate {
EAPI Elm_Object_Item *elm_widget_focused_item_get(const Evas_Object *obj);
EAPI void elm_widget_orientation_mode_disabled_set(Evas_Object *obj, Eina_Bool disabled);
EAPI Eina_Bool elm_widget_orientation_mode_disabled_get(const Evas_Object *obj);
-EAPI void elm_widget_focus_highlight_geometry_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+EAPI void elm_widget_focus_highlight_geometry_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h, Eina_Bool is_next);
EAPI Elm_Widget_Item *_elm_widget_item_new(Evas_Object *parent, size_t alloc_size);
EAPI void _elm_widget_item_free(Elm_Widget_Item *item);
EAPI Evas_Object *_elm_widget_item_widget_get(const Elm_Widget_Item *item);
Evas_Object *target = sd->focus_highlight.cur.target;
evas_object_geometry_get(obj, &px, &py, &pw, &ph);
- elm_widget_focus_highlight_geometry_get(target, &tx, &ty, &tw, &th);
+ elm_widget_focus_highlight_geometry_get(target, &tx, &ty, &tw, &th, EINA_TRUE);
evas_object_move(obj, tx, ty);
evas_object_resize(obj, tw, th);
Evas_Object *clip, *target = sd->focus_highlight.cur.target;
Evas_Coord x, y, w, h;
- elm_widget_focus_highlight_geometry_get(target, &x, &y, &w, &h);
+ elm_widget_focus_highlight_geometry_get(target, &x, &y, &w, &h, EINA_TRUE);
evas_object_move(obj, x, y);
evas_object_resize(obj, w, h);