aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/mainmenu/dlg_create_world.lua6
-rw-r--r--builtin/mainmenu/tab_local.lua11
2 files changed, 17 insertions, 0 deletions
diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua
index 2f3ef596c..eb7a596a0 100644
--- a/builtin/mainmenu/dlg_create_world.lua
+++ b/builtin/mainmenu/dlg_create_world.lua
@@ -352,6 +352,12 @@ local function create_world_buttonhandler(this, fields)
if fields["world_create_confirm"] or
fields["key_enter"] then
+ if fields["key_enter"] then
+ -- HACK: This timestamp prevents double-triggering when pressing Enter on an input box
+ -- and releasing it on a button[] or textlist[] due to instant formspec updates.
+ this.parent.dlg_create_world_closed_at = core.get_us_time()
+ end
+
local worldname = fields["te_world_name"]
local game, _ = pkgmgr.find_by_gameid(core.settings:get("menu_last_game"))
diff --git a/builtin/mainmenu/tab_local.lua b/builtin/mainmenu/tab_local.lua
index 7887039ab..eed373428 100644
--- a/builtin/mainmenu/tab_local.lua
+++ b/builtin/mainmenu/tab_local.lua
@@ -215,6 +215,10 @@ local function main_button_handler(this, fields, name, tabdata)
assert(name == "local")
+ if this.dlg_create_world_closed_at == nil then
+ this.dlg_create_world_closed_at = 0
+ end
+
local world_doubleclick = false
if fields["sp_worlds"] ~= nil then
@@ -269,6 +273,12 @@ local function main_button_handler(this, fields, name, tabdata)
end
if fields["play"] ~= nil or world_doubleclick or fields["key_enter"] then
+ local enter_key_duration = core.get_us_time() - this.dlg_create_world_closed_at
+ if world_doubleclick and enter_key_duration <= 200000 then -- 200 ms
+ this.dlg_create_world_closed_at = 0
+ return true
+ end
+
local selected = core.get_textlist_index("sp_worlds")
gamedata.selected_world = menudata.worldlist:get_raw_index(selected)
@@ -316,6 +326,7 @@ local function main_button_handler(this, fields, name, tabdata)
end
if fields["world_create"] ~= nil then
+ this.dlg_create_world_closed_at = 0
local create_world_dlg = create_create_world_dlg()
create_world_dlg:set_parent(this)
this:hide()