@@ -670,34 +670,40 @@ local function create_change_setting_formspec(dialogdata)
670
670
height = height + 1.1
671
671
672
672
elseif setting .type == " flags" then
673
- local enabled_flags = flags_to_table (get_current_value (setting ))
673
+ local current_flags = flags_to_table (get_current_value (setting ))
674
674
local flags = {}
675
- for _ , name in ipairs (enabled_flags ) do
675
+ for _ , name in ipairs (current_flags ) do
676
676
-- Index by name, to avoid iterating over all enabled_flags for every possible flag.
677
- flags [name ] = true
677
+ if name :sub (1 , 2 ) == " no" then
678
+ flags [name :sub (3 )] = false
679
+ else
680
+ flags [name ] = true
681
+ end
678
682
end
679
- local flags_count = # setting .possible
680
- local max_height = flags_count / 4
683
+ local flags_count = # setting .possible / 2
684
+ local max_height = math.ceil ( flags_count / 2 ) / 2
681
685
682
686
-- More space for flags
683
687
description_height = description_height - 1
684
688
height = height - 1
685
689
686
690
local fields = {} -- To build formspec
687
691
for i , name in ipairs (setting .possible ) do
688
- local x = 0.5
689
- local y = height + i / 2 - 0.75
690
- if i - 1 >= flags_count / 2 then -- 2nd column
691
- x = 5
692
- y = y - max_height
693
- end
694
- local checkbox_name = " cb_" .. name
695
- local is_enabled = flags [name ] == true -- to get false if nil
696
- checkboxes [checkbox_name ] = is_enabled
692
+ if name :sub (1 , 2 ) ~= " no" then
693
+ local x = 0.5
694
+ local y = height + i / 2 - 0.75
695
+ if i - 1 >= flags_count / 2 then -- 2nd column
696
+ x = 5
697
+ y = y - max_height
698
+ end
699
+ local checkbox_name = " cb_" .. name
700
+ local is_enabled = flags [name ] == true -- to get false if nil
701
+ checkboxes [checkbox_name ] = is_enabled
697
702
698
- fields [# fields + 1 ] = (" checkbox[%f,%f;%s;%s;%s]" ):format (
699
- x , y , checkbox_name , name , tostring (is_enabled )
700
- )
703
+ fields [# fields + 1 ] = (" checkbox[%f,%f;%s;%s;%s]" ):format (
704
+ x , y , checkbox_name , name , tostring (is_enabled )
705
+ )
706
+ end
701
707
end
702
708
formspec = table.concat (fields )
703
709
height = height + max_height + 0.25
@@ -833,8 +839,12 @@ local function handle_change_setting_buttons(this, fields)
833
839
elseif setting .type == " flags" then
834
840
local values = {}
835
841
for _ , name in ipairs (setting .possible ) do
836
- if checkboxes [" cb_" .. name ] then
837
- table.insert (values , name )
842
+ if name :sub (1 , 2 ) ~= " no" then
843
+ if checkboxes [" cb_" .. name ] then
844
+ table.insert (values , name )
845
+ else
846
+ table.insert (values , " no" .. name )
847
+ end
838
848
end
839
849
end
840
850
0 commit comments