forked from enlightenment/efl
elm_fileselector: correct the focus chain
This commit is contained in:
parent
59081043a8
commit
452d109627
|
@ -92,6 +92,30 @@ EFL_CALLBACKS_ARRAY_DEFINE(monitoring_callbacks,
|
||||||
{ EFL_MODEL_EVENT_CHILD_ADDED, _resource_created },
|
{ EFL_MODEL_EVENT_CHILD_ADDED, _resource_created },
|
||||||
{ EFL_MODEL_EVENT_CHILD_REMOVED, _resource_deleted });
|
{ EFL_MODEL_EVENT_CHILD_REMOVED, _resource_deleted });
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
_focus_chain_update(Eo *obj, Elm_Fileselector_Data *pd)
|
||||||
|
{
|
||||||
|
Eina_List *tmp = NULL;
|
||||||
|
|
||||||
|
#define A(p) tmp = eina_list_append(tmp, p);
|
||||||
|
|
||||||
|
A(pd->up_button)
|
||||||
|
A(pd->home_button)
|
||||||
|
A(pd->search_entry)
|
||||||
|
A(pd->files_view)
|
||||||
|
A(pd->path_entry)
|
||||||
|
A(pd->name_entry)
|
||||||
|
A(pd->filter_hoversel)
|
||||||
|
A(pd->ok_button)
|
||||||
|
A(pd->cancel_button)
|
||||||
|
|
||||||
|
|
||||||
|
#undef A
|
||||||
|
|
||||||
|
efl_ui_focus_manager_update_order(efl_ui_focus_user_manager_get(obj), obj, tmp);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_model_free_eo_cb(void *data)
|
_model_free_eo_cb(void *data)
|
||||||
{
|
{
|
||||||
|
@ -1990,6 +2014,8 @@ _elm_fileselector_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Data *pri
|
||||||
elm_object_part_content_set(obj, "elm.swallow.files", priv->files_view);
|
elm_object_part_content_set(obj, "elm.swallow.files", priv->files_view);
|
||||||
|
|
||||||
elm_obj_layout_sizing_eval(obj);
|
elm_obj_layout_sizing_eval(obj);
|
||||||
|
|
||||||
|
_focus_chain_update(obj, priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
|
@ -2154,6 +2180,8 @@ _elm_fileselector_elm_interface_fileselector_is_save_set(Eo *obj, Elm_Fileselect
|
||||||
|
|
||||||
if (is_save) elm_layout_signal_emit(obj, "elm,state,save,on", "elm");
|
if (is_save) elm_layout_signal_emit(obj, "elm,state,save,on", "elm");
|
||||||
else elm_layout_signal_emit(obj, "elm,state,save,off", "elm");
|
else elm_layout_signal_emit(obj, "elm,state,save,off", "elm");
|
||||||
|
|
||||||
|
_focus_chain_update(obj, sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
|
@ -2213,16 +2241,6 @@ _elm_fileselector_buttons_ok_cancel_set(Eo *obj, Elm_Fileselector_Data *sd, Eina
|
||||||
|
|
||||||
if (visible)
|
if (visible)
|
||||||
{
|
{
|
||||||
// cancel btn
|
|
||||||
bt = elm_button_add(obj);
|
|
||||||
efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
|
|
||||||
elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Cancel"));
|
|
||||||
|
|
||||||
efl_event_callback_add(bt, EFL_UI_EVENT_CLICKED, _canc, obj);
|
|
||||||
|
|
||||||
sd->cancel_button = bt;
|
|
||||||
elm_object_part_content_set(obj, "elm.swallow.cancel", sd->cancel_button);
|
|
||||||
|
|
||||||
// ok btn
|
// ok btn
|
||||||
bt = elm_button_add(obj);
|
bt = elm_button_add(obj);
|
||||||
efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
|
efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
|
||||||
|
@ -2232,12 +2250,24 @@ _elm_fileselector_buttons_ok_cancel_set(Eo *obj, Elm_Fileselector_Data *sd, Eina
|
||||||
|
|
||||||
sd->ok_button = bt;
|
sd->ok_button = bt;
|
||||||
elm_object_part_content_set(obj, "elm.swallow.ok", sd->ok_button);
|
elm_object_part_content_set(obj, "elm.swallow.ok", sd->ok_button);
|
||||||
|
|
||||||
|
// cancel btn
|
||||||
|
bt = elm_button_add(obj);
|
||||||
|
efl_ui_mirrored_automatic_set(bt, EINA_FALSE);
|
||||||
|
elm_object_domain_translatable_text_set(bt, PACKAGE, N_("Cancel"));
|
||||||
|
|
||||||
|
efl_event_callback_add(bt, EFL_UI_EVENT_CLICKED, _canc, obj);
|
||||||
|
|
||||||
|
sd->cancel_button = bt;
|
||||||
|
elm_object_part_content_set(obj, "elm.swallow.cancel", sd->cancel_button);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ELM_SAFE_FREE(sd->cancel_button, evas_object_del);
|
ELM_SAFE_FREE(sd->cancel_button, evas_object_del);
|
||||||
ELM_SAFE_FREE(sd->ok_button, evas_object_del);
|
ELM_SAFE_FREE(sd->ok_button, evas_object_del);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_focus_chain_update(obj, sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static Eina_Bool
|
EOLIAN static Eina_Bool
|
||||||
|
@ -3088,6 +3118,17 @@ _elm_fileselector_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN static Eina_Bool
|
||||||
|
_elm_fileselector_elm_widget_focus_register(Eo *obj, Elm_Fileselector_Data *pd, Efl_Ui_Focus_Manager *manager, Efl_Ui_Focus_Object *logical, Eina_Bool full)
|
||||||
|
{
|
||||||
|
Eina_Bool ret = elm_obj_widget_focus_register(efl_super(obj, MY_CLASS), manager, logical, full);
|
||||||
|
|
||||||
|
_focus_chain_update(obj, pd);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EOLIAN static Eina_Bool
|
EOLIAN static Eina_Bool
|
||||||
_elm_fileselector_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd, const Evas_Object *base, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight)
|
_elm_fileselector_elm_widget_focus_direction(Eo *obj EINA_UNUSED, Elm_Fileselector_Data *sd, const Evas_Object *base, double degree, Evas_Object **direction, Elm_Object_Item **direction_item, double *weight)
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,6 +41,7 @@ class Elm.Fileselector (Elm.Layout, Elm.Interface.Fileselector,
|
||||||
Elm.Widget.widget_event;
|
Elm.Widget.widget_event;
|
||||||
Elm.Widget.theme_apply;
|
Elm.Widget.theme_apply;
|
||||||
Elm.Widget.focus_next_manager_is;
|
Elm.Widget.focus_next_manager_is;
|
||||||
|
Elm.Widget.focus_register;
|
||||||
Elm.Interface.Fileselector.selected_models { get; }
|
Elm.Interface.Fileselector.selected_models { get; }
|
||||||
Elm.Interface.Fileselector.selected_model_get;
|
Elm.Interface.Fileselector.selected_model_get;
|
||||||
Elm.Interface.Fileselector.selected_model_set;
|
Elm.Interface.Fileselector.selected_model_set;
|
||||||
|
|
Loading…
Reference in New Issue