diff --git a/src/modules/illume-indicator/e_mod_main.c b/src/modules/illume-indicator/e_mod_main.c index 6c72941b3..33acaf507 100644 --- a/src/modules/illume-indicator/e_mod_main.c +++ b/src/modules/illume-indicator/e_mod_main.c @@ -4,18 +4,27 @@ #include "e_mod_win.h" /* local variables */ -static Il_Ind_Win *iwin = NULL; +static Eina_List *iwins = NULL; EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Illume-Indicator" }; EAPI void * e_modapi_init(E_Module *m) { + E_Screen *screen; + const Eina_List *l; + if (!il_ind_config_init(m)) return NULL; e_mod_ind_win_init(); - iwin = e_mod_ind_win_new(); + EINA_LIST_FOREACH(e_xinerama_screens_get(), l, screen) + { + Il_Ind_Win *iwin = NULL; + + if (!(iwin = e_mod_ind_win_new(screen))) continue; + iwins = eina_list_append(iwins, iwin); + } return m; } @@ -23,8 +32,13 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - e_object_del(E_OBJECT(iwin)); - iwin = NULL; + Il_Ind_Win *iwin; + + EINA_LIST_FREE(iwins, iwin) + { + e_object_del(E_OBJECT(iwin)); + iwin = NULL; + } e_mod_ind_win_shutdown(); il_ind_config_shutdown(); diff --git a/src/modules/illume-indicator/e_mod_win.c b/src/modules/illume-indicator/e_mod_win.c index f12681702..d13305105 100644 --- a/src/modules/illume-indicator/e_mod_win.c +++ b/src/modules/illume-indicator/e_mod_win.c @@ -37,9 +37,10 @@ e_mod_ind_win_shutdown(void) } Il_Ind_Win * -e_mod_ind_win_new(void) +e_mod_ind_win_new(E_Screen *screen) { Il_Ind_Win *iwin; + E_Container *con; E_Zone *zone; Evas *evas; Eina_List *l; @@ -53,7 +54,10 @@ e_mod_ind_win_new(void) snprintf(buff, sizeof(buff), "%s/e-module-illume-indicator.edj", il_ind_cfg->mod_dir); - iwin->win = e_win_new(e_util_container_number_get(0)); + con = e_container_current_get(e_manager_current_get()); + zone = e_util_container_zone_id_get(con->num, screen->escreen); + + iwin->win = e_win_new(con); states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR; states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER; ecore_x_netwm_window_state_set(iwin->win->evas_win, states, 2); @@ -68,8 +72,6 @@ e_mod_ind_win_new(void) evas = e_win_evas_get(iwin->win); - zone = e_zone_current_get(e_container_current_get(e_manager_current_get())); - iwin->o_event = evas_object_rectangle_add(evas); evas_object_color_set(iwin->o_event, 0, 0, 0, 0); evas_object_move(iwin->o_event, 0, 0); @@ -113,6 +115,7 @@ e_mod_ind_win_new(void) e_win_size_min_set(iwin->win, zone->w, 32); e_win_show(iwin->win); + e_win_move(iwin->win, zone->x, zone->y); if (_il_ind_win_is_locked()) ecore_x_e_illume_drag_locked_set(iwin->win->border->client.win, 1); diff --git a/src/modules/illume-indicator/e_mod_win.h b/src/modules/illume-indicator/e_mod_win.h index de79effa4..6db915c6b 100644 --- a/src/modules/illume-indicator/e_mod_win.h +++ b/src/modules/illume-indicator/e_mod_win.h @@ -3,6 +3,6 @@ int e_mod_ind_win_init(void); int e_mod_ind_win_shutdown(void); -Il_Ind_Win *e_mod_ind_win_new(void); +Il_Ind_Win *e_mod_ind_win_new(E_Screen *screen); #endif