diff --git a/src/bin/base_gui.c b/src/bin/base_gui.c index c2e0fd3..3ed37a6 100644 --- a/src/bin/base_gui.c +++ b/src/bin/base_gui.c @@ -28,6 +28,15 @@ win_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, goto_close(); } +static void +win_resize_cb(void *data EINA_UNUSED, Evas *o EINA_UNUSED, Evas_Object *obj, + void *event_info EINA_UNUSED) +{ + Evas_Coord w, h; + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + config_win_size_set(w, h); +} + /*****************************************************************************/ /* Externally accessible calls */ /*****************************************************************************/ @@ -176,6 +185,13 @@ base_gui_init(void) Evas_Object *win = elm_win_util_standard_add(elm_app_name_get(), "Enventor"); elm_win_focus_highlight_enabled_set(win, EINA_TRUE); + + Evas_Coord w, h; + config_win_size_get(&w, &h); + if ((w > 0) && (w > 0)) + evas_object_resize(win, w, h); + + evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, win_resize_cb, NULL); evas_object_smart_callback_add(win, "delete,request", win_delete_request_cb, NULL); evas_object_smart_callback_add(win, "focused", win_focused_cb, NULL); diff --git a/src/bin/config_data.c b/src/bin/config_data.c index 1e735c6..f080767 100644 --- a/src/bin/config_data.c +++ b/src/bin/config_data.c @@ -22,6 +22,7 @@ typedef struct config_s void (*update_cb)(void *data); void *update_cb_data; Evas_Coord_Size view_size; + Evas_Coord win_size_w, win_size_h; Eina_Bool stats_bar; Eina_Bool linenumber; @@ -209,6 +210,10 @@ eddc_init(void) view_scale, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "console_size", console_size, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "win_size_w", + win_size_w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "win_size_h", + win_size_h, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "stats_bar", stats_bar, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "linenumber", @@ -701,6 +706,24 @@ config_console_size_set(double size) cd->console_size = size; } +void +config_win_size_set(Evas_Coord w, Evas_Coord h) +{ + config_data *cd = g_cd; + + cd->win_size_w = w; + cd->win_size_h = h; +} + +void +config_win_size_get(Evas_Coord *w, Evas_Coord *h) +{ + config_data *cd = g_cd; + + if (w) *w = cd->win_size_w; + if (h) *h = cd->win_size_h; +} + Eina_Bool config_tools_get(void) { diff --git a/src/include/config_data.h b/src/include/config_data.h index fa252e9..8cb37a9 100644 --- a/src/include/config_data.h +++ b/src/include/config_data.h @@ -46,3 +46,5 @@ Eina_Bool config_tools_get(void); void config_tools_set(Eina_Bool enabled); double config_console_size_get(void); void config_console_size_set(double size); +void config_win_size_get(Evas_Coord *w, Evas_Coord *h); +void config_win_size_set(Evas_Coord w, Evas_Coord h);