Author: cazfi
Date: Mon Jun  9 23:58:46 2014
New Revision: 25114

URL: http://svn.gna.org/viewcvs/freeciv?rev=25114&view=rev
Log:
Iterate over city styles only once when constructing sdl(2)-client nation 
selection dialog,
fixing a bug that first of the styles appeared twice.

See bug #22148

Modified:
    trunk/client/gui-sdl/dialogs.c
    trunk/client/gui-sdl2/dialogs.c

Modified: trunk/client/gui-sdl/dialogs.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl/dialogs.c?rev=25114&r1=25113&r2=25114&view=diff
==============================================================================
--- trunk/client/gui-sdl/dialogs.c      (original)
+++ trunk/client/gui-sdl/dialogs.c      Mon Jun  9 23:58:46 2014
@@ -3137,6 +3137,7 @@
   struct NAT *pSetup;
   SDL_Rect area;
   int i;
+  struct nation_type *pnat;
 
 #define TARGETS_ROW 5
 #define TARGETS_COL 1
@@ -3254,15 +3255,16 @@
   /* nation name */
 
   pSetup->nation = fc_rand(get_playable_nation_count());
-  pSetup->nation_style = 
style_number(style_of_nation(nation_by_number(pSetup->nation)));
-
-  copy_chars_to_string16(pStr, 
nation_plural_translation(nation_by_number(pSetup->nation)));
+  pnat = nation_by_number(pSetup->nation);
+  pSetup->nation_style = style_number(style_of_nation(pnat));
+
+  copy_chars_to_string16(pStr, nation_plural_translation(pnat));
   change_ptsize16(pStr, adj_font(24));
   pStr->render = 2;
   pStr->fgcol = *get_theme_color(COLOR_THEME_NATIONDLG_TEXT);
-  
-  pTmp_Surf_zoomed = 
adj_surf(get_nation_flag_surface(nation_by_number(pSetup->nation)));
-  
+
+  pTmp_Surf_zoomed = adj_surf(get_nation_flag_surface(pnat));
+
   pWidget = create_iconlabel(pTmp_Surf_zoomed, pWindow->dst, pStr,
                        (WF_ICON_ABOVE_TEXT|WF_ICON_CENTER|WF_FREE_GFX));
   pBuf = pWidget;
@@ -3310,52 +3312,25 @@
   i = 0;
   zoom = DEFAULT_ZOOM * 1.0;
 
+  len = 0;
   styles_iterate(pstyle) {
     i = basic_city_style_for_style(pstyle);
 
-    if (i >= 0) {
-      pTmp_Surf = get_sample_city_surface(i);
-
-      if (pTmp_Surf->w > 48) {
-        zoom = DEFAULT_ZOOM * (48.0 / pTmp_Surf->w);
-      }
-
-      pTmp_Surf_zoomed = zoomSurface(get_sample_city_surface(i), zoom, zoom, 
0);
-
-      pWidget = create_icon2(pTmp_Surf_zoomed, pWindow->dst, 
WF_RESTORE_BACKGROUND);
-      pWidget->action = style_callback;
-      if (i != pSetup->nation_style) {
-        set_wstate(pWidget, FC_WS_NORMAL);
-      }
-      len = pWidget->size.w;
-      add_to_gui_list(MAX_ID - 1000 - i, pWidget);
-      break;
-    }
-  } styles_iterate_end;
-
-  len += adj_size(3);
-  zoom = DEFAULT_ZOOM * 1.0;
-  
-  styles_iterate(pstyle) {
-    i = basic_city_style_for_style(pstyle);
-
-    if (i >= 0) {
-      pTmp_Surf = get_sample_city_surface(i);
-
-      if (pTmp_Surf->w > 48) {
-        zoom = DEFAULT_ZOOM * (48.0 / pTmp_Surf->w);
-      }
-
-      pTmp_Surf_zoomed = zoomSurface(get_sample_city_surface(i), zoom, zoom, 
0);
-
-      pWidget = create_icon2(pTmp_Surf_zoomed, pWindow->dst, 
WF_RESTORE_BACKGROUND);
-      pWidget->action = style_callback;
-      if (i != pSetup->nation_style) {
-        set_wstate(pWidget, FC_WS_NORMAL);
-      }
-      len += (pWidget->size.w + adj_size(3));
-      add_to_gui_list(MAX_ID - 1000 - i, pWidget);
-    }
+    pTmp_Surf = get_sample_city_surface(i);
+
+    if (pTmp_Surf->w > 48) {
+      zoom = DEFAULT_ZOOM * (48.0 / pTmp_Surf->w);
+    }
+
+    pTmp_Surf_zoomed = zoomSurface(get_sample_city_surface(i), zoom, zoom, 0);
+
+    pWidget = create_icon2(pTmp_Surf_zoomed, pWindow->dst, 
WF_RESTORE_BACKGROUND);
+    pWidget->action = style_callback;
+    if (i != pSetup->nation_style) {
+      set_wstate(pWidget, FC_WS_NORMAL);
+    }
+    len += pWidget->size.w;
+    add_to_gui_list(MAX_ID - 1000 - i, pWidget);
   } styles_iterate_end;
 
   pLast_City_Style = pWidget;
@@ -3452,12 +3427,10 @@
   pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h + adj_size(20);
 
   /* Rest Style Buttons */
-  if (pBuf != pLast_City_Style) {
-    do {
-      pBuf = pBuf->prev;
-      pBuf->size.x = pBuf->next->size.x + pBuf->next->size.w + adj_size(3);
-      pBuf->size.y = pBuf->next->size.y;
-    } while (pLast_City_Style != pBuf);
+  while (pBuf != pLast_City_Style) {
+    pBuf = pBuf->prev;
+    pBuf->size.x = pBuf->next->size.x + pBuf->next->size.w + adj_size(3);
+    pBuf->size.y = pBuf->next->size.y;
   }
   
   putline(pWindow->theme,

Modified: trunk/client/gui-sdl2/dialogs.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/dialogs.c?rev=25114&r1=25113&r2=25114&view=diff
==============================================================================
--- trunk/client/gui-sdl2/dialogs.c     (original)
+++ trunk/client/gui-sdl2/dialogs.c     Mon Jun  9 23:58:46 2014
@@ -3132,6 +3132,7 @@
   struct NAT *pSetup;
   SDL_Rect area;
   int i;
+  struct nation_type *pnat;
 
 #define TARGETS_ROW 5
 #define TARGETS_COL 1
@@ -3249,14 +3250,15 @@
   /* nation name */
 
   pSetup->nation = fc_rand(get_playable_nation_count());
-  pSetup->nation_style = 
style_number(style_of_nation(nation_by_number(pSetup->nation)));
-
-  copy_chars_to_string16(pStr, 
nation_plural_translation(nation_by_number(pSetup->nation)));
+  pnat = nation_by_number(pSetup->nation);
+  pSetup->nation_style = style_number(style_of_nation(pnat));
+
+  copy_chars_to_string16(pStr, nation_plural_translation(pnat));
   change_ptsize16(pStr, adj_font(24));
   pStr->render = 2;
   pStr->fgcol = *get_theme_color(COLOR_THEME_NATIONDLG_TEXT);
 
-  pTmp_Surf_zoomed = 
adj_surf(get_nation_flag_surface(nation_by_number(pSetup->nation)));
+  pTmp_Surf_zoomed = adj_surf(get_nation_flag_surface(pnat));
 
   pWidget = create_iconlabel(pTmp_Surf_zoomed, pWindow->dst, pStr,
                              (WF_ICON_ABOVE_TEXT|WF_ICON_CENTER|WF_FREE_GFX));
@@ -3305,52 +3307,25 @@
   i = 0;
   zoom = DEFAULT_ZOOM * 1.0;
 
+  len = 0;
   styles_iterate(pstyle) {
     i = basic_city_style_for_style(pstyle);
 
-    if (i >= 0) {
-      pTmp_Surf = get_sample_city_surface(i);
-
-      if (pTmp_Surf->w > 48) {
-        zoom = DEFAULT_ZOOM * (48.0 / pTmp_Surf->w);
-      }
-
-      pTmp_Surf_zoomed = zoomSurface(get_sample_city_surface(i), zoom, zoom, 
0);
-
-      pWidget = create_icon2(pTmp_Surf_zoomed, pWindow->dst, 
WF_RESTORE_BACKGROUND);
-      pWidget->action = style_callback;
-      if (i != pSetup->nation_style) {
-        set_wstate(pWidget, FC_WS_NORMAL);
-      }
-      len = pWidget->size.w;
-      add_to_gui_list(MAX_ID - 1000 - i, pWidget);
-      break;
-    }
-  } styles_iterate_end;
-
-  len += adj_size(3);
-  zoom = DEFAULT_ZOOM * 1.0;
-
-  styles_iterate(pstyle) {
-    i = basic_city_style_for_style(pstyle);
-
-    if (i >= 0) {
-      pTmp_Surf = get_sample_city_surface(i);
-
-      if (pTmp_Surf->w > 48) {
-        zoom = DEFAULT_ZOOM * (48.0 / pTmp_Surf->w);
-      }
-
-      pTmp_Surf_zoomed = zoomSurface(get_sample_city_surface(i), zoom, zoom, 
0);
-
-      pWidget = create_icon2(pTmp_Surf_zoomed, pWindow->dst, 
WF_RESTORE_BACKGROUND);
-      pWidget->action = style_callback;
-      if (i != pSetup->nation_style) {
-        set_wstate(pWidget, FC_WS_NORMAL);
-      }
-      len += (pWidget->size.w + adj_size(3));
-      add_to_gui_list(MAX_ID - 1000 - i, pWidget);
-    }
+    pTmp_Surf = get_sample_city_surface(i);
+
+    if (pTmp_Surf->w > 48) {
+      zoom = DEFAULT_ZOOM * (48.0 / pTmp_Surf->w);
+    }
+
+    pTmp_Surf_zoomed = zoomSurface(get_sample_city_surface(i), zoom, zoom, 0);
+
+    pWidget = create_icon2(pTmp_Surf_zoomed, pWindow->dst, 
WF_RESTORE_BACKGROUND);
+    pWidget->action = style_callback;
+    if (i != pSetup->nation_style) {
+      set_wstate(pWidget, FC_WS_NORMAL);
+    }
+    len += pWidget->size.w;
+    add_to_gui_list(MAX_ID - 1000 - i, pWidget);
   } styles_iterate_end;
 
   pLast_City_Style = pWidget;
@@ -3449,12 +3424,10 @@
   pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h + adj_size(20);
 
   /* Rest Style Buttons */
-  if (pBuf != pLast_City_Style) {
-    do {
-      pBuf = pBuf->prev;
-      pBuf->size.x = pBuf->next->size.x + pBuf->next->size.w + adj_size(3);
-      pBuf->size.y = pBuf->next->size.y;
-    } while (pLast_City_Style != pBuf);
+  while (pBuf != pLast_City_Style) {
+    pBuf = pBuf->prev;
+    pBuf->size.x = pBuf->next->size.x + pBuf->next->size.w + adj_size(3);
+    pBuf->size.y = pBuf->next->size.y;
   }
 
 #if 0  


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to