Fix for the "white background" some people are seeing on startup.

This should not affect people that were not seeing that behavior.
See comments for explaination.


SVN revision: 28547
This commit is contained in:
Christopher Michael 2007-03-03 18:38:44 +00:00
parent fd79620f88
commit 973e258658
1 changed files with 12 additions and 11 deletions

View File

@ -350,6 +350,7 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
yy = y_count;
if (yy < 1) yy = 1;
/* Orphaned window catcher; in case desk count gets reset */
moved = 0;
if (zone->desk_x_current >= xx) moved = 1;
if (zone->desk_y_current >= yy) moved = 1;
@ -359,18 +360,8 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
ny = zone->desk_y_current;
if (zone->desk_x_current >= xx) nx = xx - 1;
if (zone->desk_y_current >= yy) ny = yy - 1;
printf("show desk %i,%i\n", nx, ny);
e_desk_show(e_desk_at_xy_get(zone, nx, ny));
}
else
{
desk = e_desk_current_get(zone);
if (desk)
{
desk->visible = 0;
e_desk_show(desk);
}
}
new_desks = malloc(xx * yy * sizeof(E_Desk *));
for (x = 0; x < xx; x++)
@ -431,11 +422,21 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
zone->desk_x_count = xx;
zone->desk_y_count = yy;
e_config->zone_desks_x_count = xx;
e_config->zone_desks_y_count = yy;
e_config_save_queue();
/* Cannot call desk_current_get until the zone desk counts have been set
* or else we end up with a "white background" because desk_current_get will
* return NULL.
*/
desk = e_desk_current_get(zone);
if (desk)
{
desk->visible = 0;
e_desk_show(desk);
}
ev = E_NEW(E_Event_Zone_Desk_Count_Set, 1);
if (!ev) return;
ev->zone = zone;