mirror of
https://github.com/minetest/minetest.git
synced 2024-12-23 22:52:25 +01:00
Bugfix: Update formname on showing new formspec while already one shown
This commit is contained in:
parent
f62ddf9022
commit
efc75db764
13
src/game.cpp
13
src/game.cpp
@ -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;
|
||||
};
|
||||
@ -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();
|
||||
|
||||
@ -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),¤t_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);
|
||||
|
Loading…
Reference in New Issue
Block a user