mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Make supplying empty formspec strings close the formspec (#4737)
This will only happen if the formname matches or if formname is "".
This commit is contained in:
parent
dbeb322f62
commit
0d1c9598a0
4 changed files with 37 additions and 9 deletions
27
src/game.cpp
27
src/game.cpp
|
@ -1205,6 +1205,7 @@ static inline void create_formspec_menu(GUIFormSpecMenu **cur_formspec,
|
|||
(*cur_formspec)->setFormSource(fs_src);
|
||||
(*cur_formspec)->setTextDest(txt_dest);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#ifdef __ANDROID__
|
||||
|
@ -1753,6 +1754,8 @@ private:
|
|||
ChatBackend *chat_backend;
|
||||
|
||||
GUIFormSpecMenu *current_formspec;
|
||||
//default: "". If other than "", empty show_formspec packets will only close the formspec when the formname matches
|
||||
std::string cur_formname;
|
||||
|
||||
EventManager *eventmgr;
|
||||
QuicktuneShortcutter *quicktune;
|
||||
|
@ -1841,6 +1844,7 @@ Game::Game() :
|
|||
soundmaker(NULL),
|
||||
chat_backend(NULL),
|
||||
current_formspec(NULL),
|
||||
cur_formname(""),
|
||||
eventmgr(NULL),
|
||||
quicktune(NULL),
|
||||
gui_chat_console(NULL),
|
||||
|
@ -3005,6 +3009,7 @@ void Game::openInventory()
|
|||
|
||||
create_formspec_menu(¤t_formspec, client, gamedef, texture_src,
|
||||
device, &input->joystick, fs_src, txt_dst, client);
|
||||
cur_formname = "";
|
||||
|
||||
InventoryLocation inventoryloc;
|
||||
inventoryloc.setCurrentPlayer();
|
||||
|
@ -3484,14 +3489,21 @@ void Game::processClientEvents(CameraOrientation *cam, float *damage_flash)
|
|||
player->hurt_tilt_strength = 0;
|
||||
|
||||
} else if (event.type == CE_SHOW_FORMSPEC) {
|
||||
FormspecFormSource *fs_src =
|
||||
new FormspecFormSource(*(event.show_formspec.formspec));
|
||||
TextDestPlayerInventory *txt_dst =
|
||||
new TextDestPlayerInventory(client, *(event.show_formspec.formname));
|
||||
if (*(event.show_formspec.formspec) == "") {
|
||||
if (current_formspec && ( *(event.show_formspec.formname) == "" || *(event.show_formspec.formname) == cur_formname) ){
|
||||
current_formspec->quitMenu();
|
||||
}
|
||||
} else {
|
||||
FormspecFormSource *fs_src =
|
||||
new FormspecFormSource(*(event.show_formspec.formspec));
|
||||
TextDestPlayerInventory *txt_dst =
|
||||
new TextDestPlayerInventory(client, *(event.show_formspec.formname));
|
||||
|
||||
create_formspec_menu(¤t_formspec, client, gamedef,
|
||||
texture_src, device, &input->joystick,
|
||||
fs_src, txt_dst, client);
|
||||
create_formspec_menu(¤t_formspec, client, gamedef,
|
||||
texture_src, device, &input->joystick,
|
||||
fs_src, txt_dst, client);
|
||||
cur_formname = *(event.show_formspec.formname);
|
||||
}
|
||||
|
||||
delete(event.show_formspec.formspec);
|
||||
delete(event.show_formspec.formname);
|
||||
|
@ -3955,6 +3967,7 @@ void Game::handlePointingAtNode(GameRunData *runData,
|
|||
|
||||
create_formspec_menu(¤t_formspec, client, gamedef,
|
||||
texture_src, device, &input->joystick, fs_src, txt_dst, client);
|
||||
cur_formname = "";
|
||||
|
||||
current_formspec->setFormSpec(meta->getString("formspec"), inventoryloc);
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue