diff --git a/configure.in b/configure.in index b58b26ee9..3ada3eb75 100644 --- a/configure.in +++ b/configure.in @@ -8,7 +8,7 @@ AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_CANONICAL_TARGET AC_ISC_POSIX -AM_INIT_AUTOMAKE(enlightenment, 0.16.999.001) +AM_INIT_AUTOMAKE(enlightenment, 0.16.999.002) AM_CONFIG_HEADER(config.h) AC_C_BIGENDIAN diff --git a/data/init/init.edc b/data/init/init.edc index 521c053a7..edfdae5ed 100644 --- a/data/init/init.edc +++ b/data/init/init.edc @@ -611,6 +611,27 @@ collections { } } } + part { + name: "icons"; + type: SWALLOW; + description { + state: "default" 0.0; + align: 0.5 0.0; + min: 128 32; + max: 1280 32; + rel1 { + to_y: "status"; + relative: 0.0 1.0; + offset: 16 8; + } + rel2 { + to_y: "status"; + relative: 1.0 1.0; + offset: -17 8; + } + color: 0 0 0 0; + } + } part { name: "logo_point"; type: RECT; diff --git a/src/bin/e_init.c b/src/bin/e_init.c index 4734e5676..c3020c127 100644 --- a/src/bin/e_init.c +++ b/src/bin/e_init.c @@ -10,10 +10,10 @@ static Ecore_X_Window _e_init_win = 0; static Ecore_Evas *_e_init_ecore_evas = NULL; static Evas *_e_init_evas = NULL; static Evas_Object *_e_init_object = NULL; +static Evas_Object *_e_init_icon_box = NULL; /* startup icons */ -static Evas_Coord _e_init_icon_x, _e_init_icon_y; -static int _e_init_icon_size, _e_init_icon_wrap; +static Evas_Coord _e_init_icon_size; static Evas_List *_e_init_icon_list; /* externally accessible functions */ @@ -50,11 +50,6 @@ e_init_init(void) ecore_evas_raise(_e_init_ecore_evas); ecore_evas_show(_e_init_ecore_evas); - _e_init_icon_size = 64; - _e_init_icon_wrap = w; - _e_init_icon_x = 0; - _e_init_icon_y = h - _e_init_icon_size; - n = ecore_x_xinerama_screen_count_get(); if (n == 0) { @@ -186,20 +181,44 @@ e_init_icons_app_add(E_App *app) E_OBJECT_CHECK(app); E_OBJECT_TYPE_CHECK(app, E_APP_TYPE); - + + if (!_e_init_evas) return; + + if (!_e_init_icon_box) + { + Evas_Coord w, h; + + o = e_box_add(_e_init_evas); + _e_init_icon_box = o; + e_box_homogenous_set(o, 1); + e_box_align_set(o, 0.5, 0.5); + edje_object_part_swallow(_e_init_object, "icons", o); + evas_object_geometry_get(o, NULL, NULL, &w, &h); + if (w > h) + { + _e_init_icon_size = h; + e_box_orientation_set(o, 1); + } + else + { + _e_init_icon_size = w; + e_box_orientation_set(o, 0); + } + evas_object_show(o); + } + o = edje_object_add(_e_init_evas); edje_object_file_set(o,app->path, "icon"); evas_object_resize(o, _e_init_icon_size, _e_init_icon_size); - evas_object_move(o, _e_init_icon_x, _e_init_icon_y); + e_box_pack_end(_e_init_icon_box, o); + e_box_pack_options_set(o, + 0, 0, + 0, 0, + 0.5, 0.5, + _e_init_icon_size, _e_init_icon_size, + _e_init_icon_size, _e_init_icon_size); evas_object_show(o); _e_init_icon_list = evas_list_append(_e_init_icon_list, o); - - _e_init_icon_x += _e_init_icon_size; - if (_e_init_icon_x + _e_init_icon_size > _e_init_icon_wrap) - { - _e_init_icon_x = 0; - _e_init_icon_y -= _e_init_icon_size; - } } void @@ -207,11 +226,13 @@ _e_init_icons_del(void) { Evas_Object *next; - while(_e_init_icon_list) + while (_e_init_icon_list) { next = _e_init_icon_list->data; evas_object_del(next); _e_init_icon_list = evas_list_remove(_e_init_icon_list, next); } - + if (_e_init_icon_box) + evas_object_del(_e_init_icon_box); + _e_init_icon_box = NULL; }