changeset 8314:b341b39f9f6d draft

(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.
author peter1138 <peter1138@openttd.org>
date Wed, 16 Jan 2008 17:43:46 +0000
parents 7eaa29f6a8f5
children 39f869ac223e
files src/group_gui.cpp
diffstat 1 files changed, 6 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/group_gui.cpp
+++ b/src/group_gui.cpp
@@ -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;
 				}