mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
(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.
This commit is contained in:
parent
c2ae2334ec
commit
389f8e0d8f
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user