diff --git a/src/factory.c b/src/factory.c index fe7c4779..03bdcfdd 100644 --- a/src/factory.c +++ b/src/factory.c @@ -512,7 +512,7 @@ int L_InputBox(lua_State* L) const int args_per_setting = 5; double min_value[max_settings]; double max_value[max_settings]; - byte decimal_places[max_settings]; + double decimal_places[max_settings]; double current_value[max_settings]; const char * label[max_settings]; unsigned short control[max_settings*3+1]; // Each value has at most 3 widgets. @@ -574,11 +574,12 @@ int L_InputBox(lua_State* L) LUA_ARG_NUMBER(setting*args_per_setting+5, "inputbox", max_value[setting], -DBL_MAX, DBL_MAX); /*if (max_value[setting] > 999999999999999.0) max_value[setting] = 999999999999999.0;*/ - LUA_ARG_NUMBER(setting*args_per_setting+6, "inputbox", decimal_places[setting], INT_MIN, INT_MAX); + LUA_ARG_NUMBER(setting*args_per_setting+6, "inputbox", decimal_places[setting], -15.0, 15.0); if (decimal_places[setting]>15) decimal_places[setting]=15; // Keep current value in range - current_value[setting] = Fround(current_value[setting], decimal_places[setting]); + if (decimal_places[setting]>=0) + current_value[setting] = Fround(current_value[setting], decimal_places[setting]); if (current_value[setting] < min_value[setting]) current_value[setting] = min_value[setting]; @@ -602,10 +603,11 @@ int L_InputBox(lua_State* L) for (setting=0; setting