changed setting font for player name after typing
[rocksndiamonds.git] / src / screens.c
index eba14f7ad58b447a601b9c97db3728c3f73a31ad..5bbe467ef211387f4651ea1647b7b05ea69fbd02 100644 (file)
@@ -4056,8 +4056,11 @@ static void getTypeNameValues(char *name, struct TextPosInfo *pos, int *xpos)
   *xpos = strlen(name);
 }
 
-static void setTypeNameValues(char *name, int *font, boolean success)
+static void setTypeNameValues(char *name, struct TextPosInfo *pos,
+                             boolean success)
 {
+  TreeInfo *node = type_name_node;
+
   if (!success)
     strcpy(name, type_name_last);
 
@@ -4066,35 +4069,33 @@ static void setTypeNameValues(char *name, int *font, boolean success)
 
   if (setup.multiple_users)
   {
-    if (type_name_node == NULL)                // should not happen
+    if (node == NULL)          // should not happen
       return;
 
     if (success)
-    {
-      type_name_node->color = FC_RED;
-
-      if (strEqual(name, EMPTY_PLAYER_NAME))
-       type_name_node->color = FC_BLUE;
-    }
+      node->color = (strEqual(name, EMPTY_PLAYER_NAME) ? FC_BLUE : FC_RED);
 
-    *font = FONT_TEXT_1 + type_name_node->color;
+    pos->font = FONT_TEXT_1 + node->color;
   }
 
   if (!success)
     return;
 
+  if (strEqual(name, type_name_last))
+    return;
+
   int last_user_nr = user.nr;
 
   if (setup.multiple_users)
   {
-    int edit_user_nr = posTreeInfo(type_name_node);
+    int edit_user_nr = posTreeInfo(node);
 
     // change name of edited user in global list of user names
     setString(&global.user_names[edit_user_nr], name);
 
     // change name of edited user in local menu tree structure
-    setString(&type_name_node->name, name);
-    setString(&type_name_node->name_sorting, name);
+    setString(&node->name, name);
+    setString(&node->name_sorting, name);
 
     // save setup of currently active user (may differ from edited user)
     SaveSetup();
@@ -4162,13 +4163,13 @@ static void HandleTypeNameExt(boolean initialize, Key key)
   }
   else if (key == KSYM_Return)
   {
-    setTypeNameValues(name, &font_nr, TRUE);
+    setTypeNameValues(name, pos, TRUE);
 
     is_active = FALSE;
   }
   else if (key == KSYM_Escape)
   {
-    setTypeNameValues(name, &font_nr, FALSE);
+    setTypeNameValues(name, pos, FALSE);
 
     is_active = FALSE;
   }
@@ -4188,7 +4189,7 @@ static void HandleTypeNameExt(boolean initialize, Key key)
     pos->width = strlen(name) * font_width;
     sx = mSX + ALIGNED_TEXT_XPOS(pos);
 
-    DrawText(sx, sy, name, font_nr);
+    DrawText(sx, sy, name, pos->font);
 
     StopTextInput();
   }
@@ -4732,7 +4733,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
          {
            if (mx >= sx1_edit_name && mx <= sx2_edit_name)
            {
-             SetGameStatus(GAME_MODE_PSEUDO_TYPENAME);
+             SetGameStatus(GAME_MODE_PSEUDO_TYPENAMES);
 
              DrawTypeName();