Loop managers & containers when looking for the proper zone.

Some re-org/cleanup during init.



SVN revision: 45124
This commit is contained in:
Christopher Michael 2010-01-14 20:10:11 +00:00
parent dec35ad102
commit b8cb5165c5
2 changed files with 87 additions and 63 deletions

View File

@ -435,49 +435,51 @@ _e_mod_layout_cb_client_message(void *data, int type, void *event)
else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_MODE)
{
E_Border *bd;
E_Manager *man;
E_Container *con;
E_Zone *zone;
Eina_List *l;
Eina_List *l, *ll, *lll;
int lock = 1;
con = e_container_current_get(e_manager_current_get());
EINA_LIST_FOREACH(con->zones, l, zone)
{
if (zone->black_win == ev->win)
{
E_Illume_Config_Zone *cz;
EINA_LIST_FOREACH(e_manager_list(), lll, man)
EINA_LIST_FOREACH(man->containers, ll, con)
EINA_LIST_FOREACH(con->zones, l, zone)
{
if (zone->black_win == ev->win)
{
E_Illume_Config_Zone *cz;
cz = e_illume_zone_config_get(zone->id);
if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_MODE_SINGLE)
cz->mode.dual = 0;
else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP)
{
if (e_illume_border_valid_count_get(zone) < 2)
ecore_x_e_illume_home_send(zone->black_win);
cz->mode.dual = 1;
cz->mode.side = 0;
lock = 0;
}
else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT)
{
if (e_illume_border_valid_count_get(zone) < 2)
ecore_x_e_illume_home_send(zone->black_win);
cz->mode.dual = 1;
cz->mode.side = 1;
}
else
cz->mode.dual = 0;
e_config_save_queue();
cz = e_illume_zone_config_get(zone->id);
if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_MODE_SINGLE)
cz->mode.dual = 0;
else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP)
{
if (e_illume_border_valid_count_get(zone) < 2)
ecore_x_e_illume_home_send(zone->black_win);
cz->mode.dual = 1;
cz->mode.side = 0;
lock = 0;
}
else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT)
{
if (e_illume_border_valid_count_get(zone) < 2)
ecore_x_e_illume_home_send(zone->black_win);
cz->mode.dual = 1;
cz->mode.side = 1;
}
else
cz->mode.dual = 0;
e_config_save_queue();
bd = e_illume_border_top_shelf_get(zone);
if (bd)
ecore_x_e_illume_drag_locked_set(bd->client.win, lock);
bd = e_illume_border_bottom_panel_get(zone);
if (bd)
ecore_x_e_illume_drag_locked_set(bd->client.win, lock);
break;
}
}
bd = e_illume_border_top_shelf_get(zone);
if (bd)
ecore_x_e_illume_drag_locked_set(bd->client.win, lock);
bd = e_illume_border_bottom_panel_get(zone);
if (bd)
ecore_x_e_illume_drag_locked_set(bd->client.win, lock);
break;
}
}
}
else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_BACK)
{

View File

@ -19,6 +19,8 @@ e_modapi_init(E_Module *m)
E_Container *con;
E_Zone *zone;
Eina_List *l, *ll, *lll;
Ecore_X_Window *zones = NULL;
unsigned int i = 0, zone_count = 0;
/* setup eina logging */
if (_e_illume_log_dom < 0)
@ -47,6 +49,18 @@ e_modapi_init(E_Module *m)
return NULL;
}
/* initialize the layout subsystem */
if (!e_mod_layout_init())
{
/* cleanup eina logging */
if (_e_illume_log_dom > 0)
{
eina_log_domain_unregister(_e_illume_log_dom);
_e_illume_log_dom = -1;
}
return NULL;
}
/* initialize the keyboard subsystem */
e_kbd_init();
@ -56,38 +70,46 @@ e_modapi_init(E_Module *m)
/* initialize the quickpanel subsystem */
e_quickpanel_init();
EINA_LIST_FOREACH(e_manager_list(), l, man)
EINA_LIST_FOREACH(e_manager_list(), l, man)
EINA_LIST_FOREACH(man->containers, ll, con)
zone_count += eina_list_count(con->zones);
zones = calloc(zone_count, sizeof(Ecore_X_Window));
if (zone_count > 0)
{
EINA_LIST_FOREACH(man->containers, ll, con)
EINA_LIST_FOREACH(e_manager_list(), l, man)
{
EINA_LIST_FOREACH(con->zones, lll, zone)
{
E_Illume_Config_Zone *cz;
E_Quickpanel *qp;
i = 0;
EINA_LIST_FOREACH(man->containers, ll, con)
EINA_LIST_FOREACH(con->zones, lll, zone)
{
Ecore_X_Illume_Mode mode;
E_Illume_Config_Zone *cz;
E_Quickpanel *qp;
/* create a new quickpanel */
if (!(qp = e_quickpanel_new(zone))) continue;
quickpanels = eina_list_append(quickpanels, qp);
/* create a new quickpanel */
if (!(qp = e_quickpanel_new(zone))) continue;
quickpanels = eina_list_append(quickpanels, qp);
cz = e_illume_zone_config_get(zone->id);
if (cz->mode.dual == 0)
ecore_x_e_illume_mode_set(zone->black_win,
ECORE_X_ILLUME_MODE_SINGLE);
else
{
if (cz->mode.side == 0)
ecore_x_e_illume_mode_set(zone->black_win,
ECORE_X_ILLUME_MODE_DUAL_TOP);
else
ecore_x_e_illume_mode_set(zone->black_win,
ECORE_X_ILLUME_MODE_DUAL_LEFT);
}
}
cz = e_illume_zone_config_get(zone->id);
if (cz->mode.dual == 0)
mode = ECORE_X_ILLUME_MODE_SINGLE;
else
{
if (cz->mode.side == 0)
mode = ECORE_X_ILLUME_MODE_DUAL_TOP;
else
mode = ECORE_X_ILLUME_MODE_DUAL_LEFT;
}
ecore_x_e_illume_mode_set(zone->black_win, mode);
ecore_x_e_illume_mode_send(zone->black_win, mode);
zones[i++] = zone->black_win;
}
if (i > 0)
ecore_x_e_illume_zone_list_set(man->root, zones, i);
}
}
/* initialize the layout subsystem */
e_mod_layout_init();
E_FREE(zones);
return m;
}