Eina_Bool can_focus : 1;
Eina_Bool child_can_focus : 1;
Eina_Bool focused : 1;
- Eina_Bool top_win_focused : 1;
Eina_Bool tree_unfocusable : 1;
Eina_Bool highlight_ignore : 1;
Eina_Bool highlight_in_theme : 1;
focus_order++;
sd->focus_order = focus_order;
- if (sd->top_win_focused)
- {
- sd->focused = EINA_TRUE;
- if (sd->on_focus_func) sd->on_focus_func(sd->on_focus_data, obj);
- if (sd->focus_func) sd->focus_func(obj);
- _elm_widget_focus_region_show(obj);
- }
+ sd->focused = EINA_TRUE;
+ if (sd->on_focus_func) sd->on_focus_func(sd->on_focus_data, obj);
+ if (sd->focus_func) sd->focus_func(obj);
+
+ _elm_widget_focus_region_show(obj);
+
sd->focus_order_on_calc = EINA_FALSE;
}
if (sd2->parent_obj)
elm_widget_sub_object_del(sd2->parent_obj, sobj);
sd2->parent_obj = obj;
- sd2->top_win_focused = sd->top_win_focused;
if (!sd->child_can_focus && (_is_focusable(sobj)))
sd->child_can_focus = EINA_TRUE;
}
if (_elm_widget_is(sd->resize_obj))
{
Smart_Data *sd2 = evas_object_smart_data_get(sd->resize_obj);
- if (sd2)
- {
- sd2->parent_obj = obj;
- sd2->top_win_focused = sd->top_win_focused;
- }
+ if (sd2) sd2->parent_obj = obj;
evas_object_event_callback_add(sobj, EVAS_CALLBACK_HIDE,
_sub_obj_hide, sd);
}
}
}
-void
-_elm_widget_top_win_focused_set(Evas_Object *obj, Eina_Bool top_win_focused)
-{
- const Eina_List *l;
- Evas_Object *child;
- API_ENTRY return;
-
- if (sd->top_win_focused == top_win_focused) return;
- if (sd->resize_obj)
- _elm_widget_top_win_focused_set(sd->resize_obj, top_win_focused);
- EINA_LIST_FOREACH(sd->subobjs, l, child)
- {
- _elm_widget_top_win_focused_set(child, top_win_focused);
- }
- sd->top_win_focused = top_win_focused;
-}
-
-Eina_Bool
-_elm_widget_top_win_focused_get(const Evas_Object *obj)
-{
- API_ENTRY return EINA_FALSE;
- return sd->top_win_focused;
-}
-
EAPI void
elm_widget_activate(Evas_Object *obj)
{
} shot;
Eina_Bool autodel : 1;
int *autodel_clear, rot;
- int show_count;
struct {
int x, y;
} screen;
if (!obj) return;
win = elm_widget_data_get(obj);
if (!win) return;
- _elm_widget_top_win_focused_set(win->win_obj, EINA_TRUE);
- if (win->show_count == 1)
- {
- elm_object_focus(win->win_obj);
- win->show_count++;
- }
- else
+ if (!elm_widget_focus_get(win->win_obj))
elm_widget_focus_restore(win->win_obj);
evas_object_smart_callback_call(win->win_obj, SIG_FOCUS_IN, NULL);
win->focus_highlight.cur.visible = EINA_TRUE;
win = elm_widget_data_get(obj);
if (!win) return;
elm_object_unfocus(win->win_obj);
- _elm_widget_top_win_focused_set(win->win_obj, EINA_FALSE);
evas_object_smart_callback_call(win->win_obj, SIG_FOCUS_OUT, NULL);
win->focus_highlight.cur.visible = EINA_FALSE;
_elm_win_focus_highlight_reconfigure_job_start(win);
}
static void
-_elm_win_obj_callback_show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_elm_win_obj_callback_show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Win *win = data;
- if (!win->show_count) win->show_count++;
+ elm_object_focus(obj);
if (win->shot.info) _shot_handle(win);
}