Skip to content

Commit

Permalink
Bugfix: Update formname on showing new formspec while already one shown
Browse files Browse the repository at this point in the history
  • Loading branch information
sapier authored and kahrl committed May 25, 2013
1 parent f62ddf9 commit efc75db
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ struct TextDestPlayerInventory : public TextDest
m_client->sendInventoryFields(m_formname, fields);
}

void setFormName(std::string formname) {
m_formname = formname;
}

Client *m_client;
std::string m_formname;
};
Expand Down Expand Up @@ -920,6 +924,7 @@ void the_game(
)
{
FormspecFormSource* current_formspec = 0;
TextDestPlayerInventory* current_textdest = 0;
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();

Expand Down Expand Up @@ -2236,19 +2241,23 @@ void the_game(
if (current_formspec == 0)
{
/* Create menu */
/* Note: FormspecFormSource and TextDestPlayerInventory
* are deleted by guiFormSpecMenu */
current_formspec = new FormspecFormSource(*(event.show_formspec.formspec),&current_formspec);

current_textdest = new TextDestPlayerInventory(&client,*(event.show_formspec.formname));
GUIFormSpecMenu *menu =
new GUIFormSpecMenu(device, guiroot, -1,
&g_menumgr,
&client, gamedef);
menu->setFormSource(current_formspec);
menu->setTextDest(new TextDestPlayerInventory(&client,*(event.show_formspec.formname)));
menu->setTextDest(current_textdest);
menu->drop();
}
else
{
assert(current_textdest != 0);
/* update menu */
current_textdest->setFormName(*(event.show_formspec.formname));
current_formspec->setForm(*(event.show_formspec.formspec));
}
delete(event.show_formspec.formspec);
Expand Down

0 comments on commit efc75db

Please sign in to comment.