diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index 238ffcdd8..12e669d31 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -337,7 +337,7 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count) { E_Desk **new_desks; E_Desk *desk, *new_desk; - int x, y, xx, yy, moved; + int x, y, xx, yy, moved, nx, ny; E_Border *bd; E_Event_Zone_Desk_Count_Set *ev; E_Border_List *bl; @@ -350,6 +350,28 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count) yy = y_count; if (yy < 1) yy = 1; + moved = 0; + if (zone->desk_x_current >= xx) moved = 1; + if (zone->desk_y_current >= yy) moved = 1; + if (moved) + { + nx = zone->desk_x_current; + 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++) { @@ -410,19 +432,6 @@ e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count) zone->desk_x_count = xx; zone->desk_y_count = yy; - moved = 0; - if (zone->desk_x_current >= xx) - moved = 1; - if (zone->desk_y_current >= yy) - moved = 1; - if (moved) - e_desk_show(e_desk_at_xy_get(zone, xx - 1, yy - 1)); - else - { - desk = e_desk_current_get(zone); - desk->visible = 0; - e_desk_show(desk); - } e_config->zone_desks_x_count = xx; e_config->zone_desks_y_count = yy; e_config_save_queue();