@@ -63,24 +63,41 @@ local function apply_new_filter(player, search_text, new_dir)
63
63
ui .set_inventory_formspec (player , ui .current_page [player_name ])
64
64
end
65
65
66
- minetest .register_on_player_receive_fields (function (player , formname , fields )
66
+ -- Search box handling
67
+ local function receive_fields_searchbox (player , formname , fields )
67
68
local player_name = player :get_player_name ()
68
69
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
70
90
91
+ minetest .register_on_player_receive_fields (function (player , formname , fields )
71
92
if formname ~= " " then
72
93
return
73
94
end
74
95
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 )
77
97
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 ()
83
99
100
+ local ui_peruser ,draw_lite_mode = unified_inventory .get_per_player_formspec (player_name )
84
101
85
102
local clicked_category
86
103
for name , value in pairs (fields ) do
@@ -201,20 +218,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
201
218
end
202
219
end
203
220
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
-
218
221
-- alternate buttons
219
222
if not (fields .alternate or fields .alternate_prev ) then
220
223
return
0 commit comments