diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index 60f7080..c2f8e2d 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -1340,6 +1340,14 @@ _edi_exit(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info edi_close(); } +static void +_edi_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win = edi_settings_win_get(); + if (win) + elm_win_raise(win); +} + static void _edi_resize_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) @@ -1512,6 +1520,7 @@ edi_open(const char *inputpath) elm_win_focus_highlight_enabled_set(win, EINA_TRUE); evas_object_smart_callback_add(win, "delete,request", _edi_exit, NULL); evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _edi_resize_cb, NULL); + evas_object_smart_callback_add(win, "focused", _edi_focused_cb, NULL); table = elm_table_add(win); evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); diff --git a/src/bin/screens/edi_screens.h b/src/bin/screens/edi_screens.h index 2d022e7..590b191 100644 --- a/src/bin/screens/edi_screens.h +++ b/src/bin/screens/edi_screens.h @@ -58,6 +58,22 @@ Evas_Object *edi_about_show(Evas_Object *mainwin); */ Evas_Object *edi_settings_show(Evas_Object *mainwin); +/** + * Return a pointer to the settings window. + * + * @return The object if it exists or NULL if not. + * + * @ingroup UI + */ +Evas_Object *edi_settings_win_get(void); + +/** + * Create the font selection settings widget. + * + * @param parent The parent object for the font selection widget. + * + * @ingroup UI + */ void edi_settings_font_add(Evas_Object *parent); /** diff --git a/src/bin/screens/edi_settings.c b/src/bin/screens/edi_settings.c index 8cf2dd0..5f634cc 100644 --- a/src/bin/screens/edi_settings.c +++ b/src/bin/screens/edi_settings.c @@ -13,6 +13,7 @@ #include "edi_private.h" +static Evas_Object *_edi_settings_win; static Elm_Object_Item *_edi_settings_display, *_edi_settings_builds, *_edi_settings_behaviour, *_edi_settings_project; @@ -21,6 +22,8 @@ static Elm_Object_Item *_edi_settings_display, *_edi_settings_builds, static void _edi_settings_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { + _edi_settings_win = NULL; + evas_object_del(data); } @@ -819,13 +822,19 @@ _edi_settings_behaviour_create(Evas_Object *parent) return frame; } +Evas_Object * +edi_settings_win_get(void) +{ + return _edi_settings_win; +} + Evas_Object * edi_settings_show(Evas_Object *mainwin) { Evas_Object *win, *bg, *table, *naviframe, *tb; Elm_Object_Item *tb_it, *default_it; - win = elm_win_add(mainwin, "settings", ELM_WIN_BASIC); + _edi_settings_win = win = elm_win_add(mainwin, "settings", ELM_WIN_BASIC); if (!win) return NULL; elm_win_title_set(win, _("Edi Settings"));