@@ -134,6 +134,10 @@ struct TextDestPlayerInventory : public TextDest
134
134
m_client->sendInventoryFields (m_formname, fields);
135
135
}
136
136
137
+ void setFormName (std::string formname) {
138
+ m_formname = formname;
139
+ }
140
+
137
141
Client *m_client;
138
142
std::string m_formname;
139
143
};
@@ -920,6 +924,7 @@ void the_game(
920
924
)
921
925
{
922
926
FormspecFormSource* current_formspec = 0 ;
927
+ TextDestPlayerInventory* current_textdest = 0 ;
923
928
video::IVideoDriver* driver = device->getVideoDriver ();
924
929
scene::ISceneManager* smgr = device->getSceneManager ();
925
930
@@ -2236,19 +2241,23 @@ void the_game(
2236
2241
if (current_formspec == 0 )
2237
2242
{
2238
2243
/* Create menu */
2244
+ /* Note: FormspecFormSource and TextDestPlayerInventory
2245
+ * are deleted by guiFormSpecMenu */
2239
2246
current_formspec = new FormspecFormSource (*(event.show_formspec .formspec ),¤t_formspec);
2240
-
2247
+ current_textdest = new TextDestPlayerInventory (&client,*(event. show_formspec . formname ));
2241
2248
GUIFormSpecMenu *menu =
2242
2249
new GUIFormSpecMenu (device, guiroot, -1 ,
2243
2250
&g_menumgr,
2244
2251
&client, gamedef);
2245
2252
menu->setFormSource (current_formspec);
2246
- menu->setTextDest (new TextDestPlayerInventory (&client,*(event. show_formspec . formname )) );
2253
+ menu->setTextDest (current_textdest );
2247
2254
menu->drop ();
2248
2255
}
2249
2256
else
2250
2257
{
2258
+ assert (current_textdest != 0 );
2251
2259
/* update menu */
2260
+ current_textdest->setFormName (*(event.show_formspec .formname ));
2252
2261
current_formspec->setForm (*(event.show_formspec .formspec ));
2253
2262
}
2254
2263
delete (event.show_formspec .formspec );
0 commit comments