From ce5cd75211e8f750475ac2e81a629794c5262e19 Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Sun, 19 Aug 2018 14:17:07 +0100 Subject: [PATCH] settings: on alpha window change keep on top. When changing window alpha ensure the settings window remains on top. Previously an alpha change would lose the settings window when enabling alpha. Also add some documentation. --- src/bin/edi_main.c | 9 +++++++++ src/bin/screens/edi_screens.h | 16 ++++++++++++++++ src/bin/screens/edi_settings.c | 11 ++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) 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"));