mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-17 21:25:40 +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 w the window the dropdown belongs to
|
||||||
* @param gid the currently selected group in the window
|
* @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[] = {
|
static StringID action_str[] = {
|
||||||
STR_REPLACE_VEHICLES,
|
STR_REPLACE_VEHICLES,
|
||||||
STR_SEND_FOR_SERVICING,
|
STR_SEND_FOR_SERVICING,
|
||||||
@ -299,8 +297,10 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
|||||||
case WE_INVALIDATE_DATA:
|
case WE_INVALIDATE_DATA:
|
||||||
gv->l.flags |= VL_REBUILD;
|
gv->l.flags |= VL_REBUILD;
|
||||||
gl->l.flags |= VL_REBUILD;
|
gl->l.flags |= VL_REBUILD;
|
||||||
if (!IsValidGroupID(gv->group_sel)) gv->group_sel = ALL_GROUP;
|
if (!IsValidGroupID(gv->group_sel)) {
|
||||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
gv->group_sel = ALL_GROUP;
|
||||||
|
HideDropDownMenu(w);
|
||||||
|
}
|
||||||
SetWindowDirty(w);
|
SetWindowDirty(w);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -513,7 +513,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
|||||||
if (!IsAllGroupID(gv->group_sel)) {
|
if (!IsAllGroupID(gv->group_sel)) {
|
||||||
gv->group_sel = ALL_GROUP;
|
gv->group_sel = ALL_GROUP;
|
||||||
gv->l.flags |= VL_REBUILD;
|
gv->l.flags |= VL_REBUILD;
|
||||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
|
||||||
SetWindowDirty(w);
|
SetWindowDirty(w);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -522,7 +521,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
|||||||
if (!IsDefaultGroupID(gv->group_sel)) {
|
if (!IsDefaultGroupID(gv->group_sel)) {
|
||||||
gv->group_sel = DEFAULT_GROUP;
|
gv->group_sel = DEFAULT_GROUP;
|
||||||
gv->l.flags |= VL_REBUILD;
|
gv->l.flags |= VL_REBUILD;
|
||||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
|
||||||
SetWindowDirty(w);
|
SetWindowDirty(w);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -539,7 +537,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
|||||||
gv->group_sel = gl->sort_list[id_g]->index;;
|
gv->group_sel = gl->sort_list[id_g]->index;;
|
||||||
|
|
||||||
gv->l.flags |= VL_REBUILD;
|
gv->l.flags |= VL_REBUILD;
|
||||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
|
||||||
SetWindowDirty(w);
|
SetWindowDirty(w);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -594,7 +591,7 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
|||||||
|
|
||||||
case GRP_WIDGET_MANAGE_VEHICLES:
|
case GRP_WIDGET_MANAGE_VEHICLES:
|
||||||
case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN: {
|
case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN: {
|
||||||
UpdateGroupActionDropdown(w, gv->group_sel, false);
|
ShowGroupActionDropdown(w, gv->group_sel);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user