Rework indicator for xinerama support.

SVN revision: 44904
This commit is contained in:
Christopher Michael 2010-01-05 01:40:31 +00:00
parent 00a39733f9
commit e8d3e7c673
3 changed files with 26 additions and 9 deletions

View File

@ -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();

View File

@ -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);

View File

@ -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