(svn r11879) -Fix: Only update group action drop down list when clicking on the dropdown text/button. Other times is not needed and caused a double free.
authorpeter1138
Wed, 16 Jan 2008 17:43:46 +0000
changeset 8810 64adff2796e4
parent 8809 07a86b81ea37
child 8811 cf734ff178bf
(svn r11879) -Fix: Only update group action drop down list when clicking on the dropdown text/button. Other times is not needed and caused a double free.
src/group_gui.cpp
--- a/src/group_gui.cpp	Wed Jan 16 16:52:50 2008 +0000
+++ b/src/group_gui.cpp	Wed Jan 16 17:43:46 2008 +0000
@@ -263,10 +263,8 @@
  * @param w   the window the dropdown belongs to
  * @param gid the currently selected group in the window
  */
-static void UpdateGroupActionDropdown(Window *w, GroupID gid, bool refresh = true)
+static void ShowGroupActionDropdown(Window *w, GroupID gid)
 {
-	if (refresh && !w->IsWidgetLowered(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) return;
-
 	static StringID action_str[] = {
 		STR_REPLACE_VEHICLES,
 		STR_SEND_FOR_SERVICING,
@@ -299,8 +297,10 @@
 		case WE_INVALIDATE_DATA:
 			gv->l.flags |= VL_REBUILD;
 			gl->l.flags |= VL_REBUILD;
-			if (!IsValidGroupID(gv->group_sel)) gv->group_sel = ALL_GROUP;
-			UpdateGroupActionDropdown(w, gv->group_sel);
+			if (!IsValidGroupID(gv->group_sel)) {
+				gv->group_sel = ALL_GROUP;
+				HideDropDownMenu(w);
+			}
 			SetWindowDirty(w);
 			break;
 
@@ -513,7 +513,6 @@
 					if (!IsAllGroupID(gv->group_sel)) {
 						gv->group_sel = ALL_GROUP;
 						gv->l.flags |= VL_REBUILD;
-						UpdateGroupActionDropdown(w, gv->group_sel);
 						SetWindowDirty(w);
 					}
 					break;
@@ -522,7 +521,6 @@
 					if (!IsDefaultGroupID(gv->group_sel)) {
 						gv->group_sel = DEFAULT_GROUP;
 						gv->l.flags |= VL_REBUILD;
-						UpdateGroupActionDropdown(w, gv->group_sel);
 						SetWindowDirty(w);
 					}
 					break;
@@ -539,7 +537,6 @@
 					gv->group_sel = gl->sort_list[id_g]->index;;
 
 					gv->l.flags |= VL_REBUILD;
-					UpdateGroupActionDropdown(w, gv->group_sel);
 					SetWindowDirty(w);
 					break;
 				}
@@ -594,7 +591,7 @@
 
 				case GRP_WIDGET_MANAGE_VEHICLES:
 				case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN:  {
-					UpdateGroupActionDropdown(w, gv->group_sel, false);
+					ShowGroupActionDropdown(w, gv->group_sel);
 					break;
 				}