Mercurial > hg > openttd
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; }