Skip to content

Commit b2cc3d1

Browse files
committed
Fix search not working after page flip
1 parent 37969b2 commit b2cc3d1

File tree

1 file changed

+26
-23
lines changed

1 file changed

+26
-23
lines changed

callbacks.lua

+26-23
Original file line numberDiff line numberDiff line change
@@ -63,24 +63,41 @@ local function apply_new_filter(player, search_text, new_dir)
6363
ui.set_inventory_formspec(player, ui.current_page[player_name])
6464
end
6565

66-
minetest.register_on_player_receive_fields(function(player, formname, fields)
66+
-- Search box handling
67+
local function receive_fields_searchbox(player, formname, fields)
6768
local player_name = player:get_player_name()
6869

69-
local ui_peruser,draw_lite_mode = unified_inventory.get_per_player_formspec(player_name)
70+
-- always take new search text, even if not searching on it yet
71+
if fields.searchbox and fields.searchbox ~= ui.current_searchbox[player_name] then
72+
ui.current_searchbox[player_name] = fields.searchbox
73+
end
74+
75+
if fields.searchbutton
76+
or fields.key_enter_field == "searchbox" then
77+
78+
if ui.current_searchbox[player_name] ~= ui.activefilter[player_name] then
79+
ui.apply_filter(player, ui.current_searchbox[player_name], "nochange")
80+
ui.set_inventory_formspec(player, ui.current_page[player_name])
81+
minetest.sound_play("paperflip2",
82+
{to_player=player_name, gain = 1.0})
83+
end
84+
elseif fields.searchresetbutton then
85+
if ui.activefilter[player_name] ~= "" then
86+
apply_new_filter(player, "", "nochange")
87+
end
88+
end
89+
end
7090

91+
minetest.register_on_player_receive_fields(function(player, formname, fields)
7192
if formname ~= "" then
7293
return
7394
end
7495

75-
-- always take new search text, even if not searching on it yet
76-
local dirty_search_filter = false
96+
receive_fields_searchbox(player, formname, fields)
7797

78-
if fields.searchbox
79-
and fields.searchbox ~= unified_inventory.current_searchbox[player_name] then
80-
unified_inventory.current_searchbox[player_name] = fields.searchbox
81-
dirty_search_filter = true
82-
end
98+
local player_name = player:get_player_name()
8399

100+
local ui_peruser,draw_lite_mode = unified_inventory.get_per_player_formspec(player_name)
84101

85102
local clicked_category
86103
for name, value in pairs(fields) do
@@ -201,20 +218,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
201218
end
202219
end
203220

204-
if fields.searchbutton
205-
or fields.key_enter_field == "searchbox" then
206-
if dirty_search_filter then
207-
ui.apply_filter(player, ui.current_searchbox[player_name], "nochange")
208-
ui.set_inventory_formspec(player, ui.current_page[player_name])
209-
minetest.sound_play("paperflip2",
210-
{to_player=player_name, gain = 1.0})
211-
end
212-
elseif fields.searchresetbutton then
213-
if ui.activefilter[player_name] ~= "" then
214-
apply_new_filter(player, "", "nochange")
215-
end
216-
end
217-
218221
-- alternate buttons
219222
if not (fields.alternate or fields.alternate_prev) then
220223
return

0 commit comments

Comments
 (0)