diff options
author | peter1138 <peter1138@openttd.org> | 2008-01-16 17:43:46 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2008-01-16 17:43:46 +0000 |
commit | 389f8e0d8f640b36fc6e02fc165243b3387e6c4e (patch) | |
tree | 1a8aa503bc635edc547523eb1b5992229dcc8f40 | |
parent | c2ae2334ec6e71466c61d059936b07770dc71bbf (diff) | |
download | openttd-389f8e0d8f640b36fc6e02fc165243b3387e6c4e.tar.xz |
(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.
-rw-r--r-- | src/group_gui.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 1d74002c3..21f3e2594 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -263,10 +263,8 @@ static void CreateVehicleGroupWindow(Window *w) * @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 @@ static void GroupWndProc(Window *w, WindowEvent *e) 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 @@ static void GroupWndProc(Window *w, WindowEvent *e) 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 @@ static void GroupWndProc(Window *w, WindowEvent *e) 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 @@ static void GroupWndProc(Window *w, WindowEvent *e) 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 @@ static void GroupWndProc(Window *w, WindowEvent *e) case GRP_WIDGET_MANAGE_VEHICLES: case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN: { - UpdateGroupActionDropdown(w, gv->group_sel, false); + ShowGroupActionDropdown(w, gv->group_sel); break; } |