From 00a39733f9d5f57f51dbb77066103f22c39ddede Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Tue, 5 Jan 2010 01:39:53 +0000 Subject: [PATCH] Modify softkey code to handle xinerama. SVN revision: 44903 --- src/modules/illume-softkey/e_mod_main.c | 23 +++++++++++++++++++---- src/modules/illume-softkey/e_mod_win.c | 12 +++++++----- src/modules/illume-softkey/e_mod_win.h | 2 +- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/modules/illume-softkey/e_mod_main.c b/src/modules/illume-softkey/e_mod_main.c index e192f5c3b..5f1f1e3ab 100644 --- a/src/modules/illume-softkey/e_mod_main.c +++ b/src/modules/illume-softkey/e_mod_main.c @@ -3,7 +3,8 @@ #include "e_mod_config.h" #include "e_mod_win.h" -static Il_Sk_Win *swin = NULL; +/* local variables */ +static Eina_List *swins = NULL; EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Illume-Softkey" }; @@ -11,11 +12,20 @@ EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Illume-Softkey" }; EAPI void * e_modapi_init(E_Module *m) { + E_Screen *screen; + const Eina_List *l; + if (!il_sk_config_init(m)) return NULL; e_mod_sk_win_init(); - swin = e_mod_sk_win_new(); + EINA_LIST_FOREACH(e_xinerama_screens_get(), l, screen) + { + Il_Sk_Win *swin = NULL; + + if (!(swin = e_mod_sk_win_new(screen))) continue; + swins = eina_list_append(swins, swin); + } return m; } @@ -23,8 +33,13 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - e_object_del(E_OBJECT(swin)); - swin = NULL; + Il_Sk_Win *swin; + + EINA_LIST_FREE(swins, swin) + { + e_object_del(E_OBJECT(swin)); + swin = NULL; + } e_mod_sk_win_shutdown(); diff --git a/src/modules/illume-softkey/e_mod_win.c b/src/modules/illume-softkey/e_mod_win.c index d2d03379c..0970d68a5 100644 --- a/src/modules/illume-softkey/e_mod_win.c +++ b/src/modules/illume-softkey/e_mod_win.c @@ -22,9 +22,10 @@ e_mod_sk_win_shutdown(void) } Il_Sk_Win * -e_mod_sk_win_new(void) +e_mod_sk_win_new(E_Screen *screen) { Il_Sk_Win *swin; + E_Container *con; E_Zone *zone; Evas *evas; Ecore_X_Window_State states[2]; @@ -36,7 +37,10 @@ e_mod_sk_win_new(void) snprintf(buff, sizeof(buff), "%s/e-module-illume-softkey.edj", il_sk_cfg->mod_dir); - swin->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); + + swin->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(swin->win->evas_win, states, 2); @@ -52,8 +56,6 @@ e_mod_sk_win_new(void) evas = e_win_evas_get(swin->win); - zone = e_util_container_zone_number_get(0, 0); - swin->o_base = edje_object_add(evas); if (!e_theme_edje_object_set(swin->o_base, "base/theme/modules/illume-softkey", "modules/illume-softkey/window")) @@ -75,7 +77,7 @@ e_mod_sk_win_new(void) e_win_size_min_set(swin->win, zone->w, 32); e_win_show(swin->win); - e_win_move_resize(swin->win, 0, (zone->h - 32), zone->w, 32); + e_win_move_resize(swin->win, zone->x, (zone->h - 32), zone->w, 32); return swin; } diff --git a/src/modules/illume-softkey/e_mod_win.h b/src/modules/illume-softkey/e_mod_win.h index ae24e0222..864170b24 100644 --- a/src/modules/illume-softkey/e_mod_win.h +++ b/src/modules/illume-softkey/e_mod_win.h @@ -3,6 +3,6 @@ int e_mod_sk_win_init(void); int e_mod_sk_win_shutdown(void); -Il_Sk_Win *e_mod_sk_win_new(void); +Il_Sk_Win *e_mod_sk_win_new(E_Screen *screen); #endif