Fix: UI Overriding some settings per object (#11977)

* Fix: Add missing categories to print settings (Seam, Wipe, Accel, Scarf)

    - Assigns categories (Quality, Speed) to various print settings in PrintConfig.cpp.
    - Ensures these settings are correctly tracked in the UI override list (GUI_ObjectList).
    - Fixes issue where overriding these settings per-object did not trigger the 'modified' icon.

* Fix: Add missing categories to additional per-object settings

- Assigns categories (Speed, Quality, Strength, Support) to relevant settings.
- Cleans up duplicate definition of 'outer_wall_acceleration' in PrintConfig.cpp.
- Ensures the 'modified' icon (orange arrow) appears correctly in the Object List.

* Fix: Restore original default values for acceleration and skirt angle

- Reverted 'default_acceleration' back to 500.
- Reverted 'skirt_start_angle' back to -135.

* Style: Remove trailing whitespace in print_flow_ratio tooltip

* Fix: Mark skirt_start_angle as advanced setting

* fix values
This commit is contained in:
tome9111991 2026-01-16 22:18:53 +01:00 committed by GitHub
parent d69620a716
commit 9abe42c503
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1697,6 +1697,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("default_acceleration", coFloat);
def->label = L("Normal printing");
def->category = L("Speed");
def->tooltip = L("The default acceleration of both normal printing and travel except initial layer.");
def->sidetext = L(u8"mm/s²"); // milimeters per second per second, CIS languages need translation
def->min = 0;
@ -2144,6 +2145,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("print_flow_ratio", coFloat);
def->label = L("Flow ratio");
def->category = L("Quality");
def->tooltip = L("The material may have volumetric change after switching between molten and crystalline states. "
"This setting changes all extrusion flow of this filament in G-code proportionally. "
"The recommended value range is between 0.95 and 1.05. "
@ -2750,6 +2752,7 @@ void PrintConfigDef::init_fff_params()
// Infill multiline
def = this->add("fill_multiline", coInt);
def->label = L("Fill Multiline");
def->category = L("Strength");
def->tooltip = L("Using multiple lines for the infill pattern, if supported by infill pattern.");
def->min = 1;
def->max = 10; // Maximum number of lines for infill pattern
@ -2895,16 +2898,9 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloatOrPercent(20, false));
def = this->add("outer_wall_acceleration", coFloat);
def->label = L("Outer wall");
def->tooltip = L("Acceleration of outer walls.");
def->sidetext = L(u8"mm/s²"); // milimeters per second per second, CIS languages need translation
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(10000));
def = this->add("inner_wall_acceleration", coFloat);
def->label = L("Inner wall");
def->category = L("Speed");
def->tooltip = L("Acceleration of inner walls.");
def->sidetext = L(u8"mm/s²"); // milimeters per second per second, CIS languages need translation
def->min = 0;
@ -2913,6 +2909,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("travel_acceleration", coFloat);
def->label = L("Travel");
def->category = L("Speed");
def->tooltip = L("Acceleration of travel moves.");
def->sidetext = L(u8"mm/s²"); // milimeters per second per second, CIS languages need translation
def->min = 0;
@ -2921,6 +2918,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("top_surface_acceleration", coFloat);
def->label = L("Top surface");
def->category = L("Speed");
def->tooltip = L("Acceleration of top surface infill. Using a lower value may improve top surface quality.");
def->sidetext = L(u8"mm/s²"); // milimeters per second per second, CIS languages need translation
def->min = 0;
@ -2929,6 +2927,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("outer_wall_acceleration", coFloat);
def->label = L("Outer wall");
def->category = L("Speed");
def->tooltip = L("Acceleration of outer wall. Using a lower value can improve quality.");
def->sidetext = L(u8"mm/s²"); // milimeters per second per second, CIS languages need translation
def->min = 0;
@ -2937,6 +2936,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("bridge_acceleration", coFloatOrPercent);
def->label = L("Bridge");
def->category = L("Speed");
def->tooltip = L("Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration.");
def->sidetext = L("mm/s² or %");
def->min = 0;
@ -2946,6 +2946,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("sparse_infill_acceleration", coFloatOrPercent);
def->label = L("Sparse infill");
def->category = L("Speed");
def->tooltip = L("Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration.");
def->sidetext = L("mm/s² or %");
def->min = 0;
@ -2955,6 +2956,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("internal_solid_infill_acceleration", coFloatOrPercent);
def->label = L("Internal solid infill");
def->category = L("Speed");
def->tooltip = L("Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration.");
def->sidetext = L("mm/s² or %");
def->min = 0;
@ -2964,6 +2966,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("initial_layer_acceleration", coFloat);
def->label = L("Initial layer");
def->category = L("Speed");
def->tooltip = L("Acceleration of initial layer. Using a lower value can improve build plate adhesion.");
def->sidetext = L(u8"mm/s²"); // milimeters per second per second, CIS languages need translation
def->min = 0;
@ -2972,12 +2975,14 @@ void PrintConfigDef::init_fff_params()
def = this->add("accel_to_decel_enable", coBool);
def->label = L("Enable accel_to_decel");
def->category = L("Speed");
def->tooltip = L("Klipper's max_accel_to_decel will be adjusted automatically.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(true));
def = this->add("accel_to_decel_factor", coPercent);
def->label = L("accel_to_decel");
def->category = L("Speed");
def->tooltip = L("Klipper's max_accel_to_decel will be adjusted to this %% of acceleration.");
def->sidetext = "%";
def->min = 1;
@ -2987,6 +2992,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("default_jerk", coFloat);
def->label = L("Default");
def->category = L("Speed");
def->tooltip = L("Default jerk.");
def->sidetext = L("mm/s"); // milimeters per second, CIS languages need translation
def->min = 0;
@ -2995,6 +3001,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("default_junction_deviation", coFloat);
def->label = L("Junction Deviation");
def->category = L("Speed");
def->tooltip = L("Marlin Firmware Junction Deviation (replaces the traditional XY Jerk setting).");
def->sidetext = L("mm"); // milimeters, CIS languages need translation
def->min = 0;
@ -3003,6 +3010,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("outer_wall_jerk", coFloat);
def->label = L("Outer wall");
def->category = L("Speed");
def->tooltip = L("Jerk of outer walls.");
def->sidetext = L("mm/s"); // milimeters per second, CIS languages need translation
def->min = 0;
@ -3011,6 +3019,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("inner_wall_jerk", coFloat);
def->label = L("Inner wall");
def->category = L("Speed");
def->tooltip = L("Jerk of inner walls.");
def->sidetext = L("mm/s"); // milimeters per second, CIS languages need translation
def->min = 0;
@ -3019,6 +3028,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("top_surface_jerk", coFloat);
def->label = L("Top surface");
def->category = L("Speed");
def->tooltip = L("Jerk for top surface.");
def->sidetext = L("mm/s"); // milimeters per second, CIS languages need translation
def->min = 0;
@ -3027,6 +3037,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("infill_jerk", coFloat);
def->label = L("Infill");
def->category = L("Speed");
def->tooltip = L("Jerk for infill.");
def->sidetext = L("mm/s"); // milimeters per second, CIS languages need translation
def->min = 0;
@ -3035,6 +3046,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("initial_layer_jerk", coFloat);
def->label = L("Initial layer");
def->category = L("Speed");
def->tooltip = L("Jerk for initial layer.");
def->sidetext = L("mm/s"); // milimeters per second, CIS languages need translation
def->min = 0;
@ -3043,6 +3055,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("travel_jerk", coFloat);
def->label = L("Travel");
def->category = L("Speed");
def->tooltip = L("Jerk for travel.");
def->sidetext = L("mm/s"); // milimeters per second, CIS languages need translation
def->min = 0;
@ -3173,6 +3186,7 @@ void PrintConfigDef::init_fff_params()
// Filament ironing overrides
def = this->add("filament_ironing_flow", coPercents);
def->label = L("Ironing flow");
def->category = L("Quality");
def->tooltip = L("Filament-specific override for ironing flow. This allows you to customize the ironing flow "
"for each filament type. Too high value results in overextrusion on the surface.");
def->sidetext = "%";
@ -3184,6 +3198,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("filament_ironing_spacing", coFloats);
def->label = L("Ironing line spacing");
def->category = L("Quality");
def->tooltip = L("Filament-specific override for ironing line spacing. This allows you to customize the spacing "
"between ironing lines for each filament type.");
def->sidetext = "mm";
@ -3195,6 +3210,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("filament_ironing_inset", coFloats);
def->label = L("Ironing inset");
def->category = L("Quality");
def->tooltip = L("Filament-specific override for ironing inset. This allows you to customize the distance to keep "
"from the edges when ironing for each filament type.");
def->sidetext = "mm";
@ -3206,6 +3222,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("filament_ironing_speed", coFloats);
def->label = L("Ironing speed");
def->category = L("Speed");
def->tooltip = L("Filament-specific override for ironing speed. This allows you to customize the print speed "
"of ironing lines for each filament type.");
def->sidetext = "mm/s";
@ -3355,6 +3372,7 @@ void PrintConfigDef::init_fff_params()
// BBS
def = this->add("precise_z_height", coBool);
def->label = L("Precise Z height");
def->category = L("Quality");
def->tooltip = L("Enable this to get precise Z height of object after slicing. "
"It will get the precise object height by fine-tuning the layer heights of the last few layers. "
"Note that this is an experimental parameter.");
@ -4039,6 +4057,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("small_area_infill_flow_compensation", coBool);
def->label = L("Small area flow compensation (beta)");
def->category = L("Quality");
def->tooltip = L("Enable flow compensation for small infill areas.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
@ -4973,12 +4992,14 @@ void PrintConfigDef::init_fff_params()
def = this->add("staggered_inner_seams", coBool);
def->label = L("Staggered inner seams");
def->category = L("Quality");
def->tooltip = L("This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("seam_gap", coFloatOrPercent);
def->label = L("Seam gap");
def->category = L("Quality");
def->tooltip = L("In order to reduce the visibility of the seam in a closed loop extrusion, the loop is interrupted and shortened by a specified amount.\n"
"This amount can be specified in millimeters or as a percentage of the current extruder diameter. The default value for this parameter is 10%.");
def->sidetext = L("mm or %");
@ -4988,6 +5009,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("seam_slope_type", coEnum);
def->label = L("Scarf joint seam (beta)");
def->category = L("Quality");
def->tooltip = L("Use scarf joint to minimize seam visibility and increase seam strength.");
def->enum_keys_map = &ConfigOptionEnum<SeamScarfType>::get_enum_values();
def->enum_values.push_back("none");
@ -5001,12 +5023,14 @@ void PrintConfigDef::init_fff_params()
def = this->add("seam_slope_conditional", coBool);
def->label = L("Conditional scarf joint");
def->category = L("Quality");
def->tooltip = L("Apply scarf joints only to smooth perimeters where traditional seams do not conceal the seams at sharp corners effectively.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("scarf_angle_threshold", coInt);
def->label = L("Conditional angle threshold");
def->category = L("Quality");
def->tooltip = L(
"This option sets the threshold angle for applying a conditional scarf joint seam.\nIf the maximum angle within the perimeter loop "
"exceeds this value (indicating the absence of sharp corners), a scarf joint seam will be used. The default value is 155°.");
@ -5044,6 +5068,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("scarf_joint_flow_ratio", coFloat);
def->label = L("Scarf joint flow ratio");
def->category = L("Quality");
def->tooltip = L("This factor affects the amount of material for scarf joints.");
def->mode = comDevelop;
def->max = 2;
@ -5051,6 +5076,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("seam_slope_start_height", coFloatOrPercent);
def->label = L("Scarf start height");
def->category = L("Quality");
def->tooltip = L("Start height of the scarf.\n"
"This amount can be specified in millimeters or as a percentage of the current layer height. The default value for this parameter is 0.");
def->sidetext = L("mm or %");
@ -5061,12 +5087,14 @@ void PrintConfigDef::init_fff_params()
def = this->add("seam_slope_entire_loop", coBool);
def->label = L("Scarf around entire wall");
def->category = L("Quality");
def->tooltip = L("The scarf extends to the entire length of the wall.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("seam_slope_min_length", coFloat);
def->label = L("Scarf length");
def->category = L("Quality");
def->tooltip = L("Length of the scarf. Setting this parameter to zero effectively disables the scarf.");
def->sidetext = L("mm"); // milimeters, CIS languages need translation
def->min = 0;
@ -5075,6 +5103,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("seam_slope_steps", coInt);
def->label = L("Scarf steps");
def->category = L("Quality");
def->tooltip = L("Minimum number of segments of each scarf.");
def->min = 1;
def->mode = comAdvanced;
@ -5082,12 +5111,14 @@ void PrintConfigDef::init_fff_params()
def = this->add("seam_slope_inner_walls", coBool);
def->label = L("Scarf joint for inner walls");
def->category = L("Quality");
def->tooltip = L("Use scarf joint for inner walls as well.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("role_based_wipe_speed", coBool);
def->label = L("Role base wipe speed");
def->category = L("Speed");
def->tooltip = L("The wipe speed is determined by the speed of the current extrusion role. "
"e.g. if a wipe action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action.");
def->mode = comAdvanced;
@ -5095,12 +5126,14 @@ void PrintConfigDef::init_fff_params()
def = this->add("wipe_on_loops", coBool);
def->label = L("Wipe on loops");
def->category = L("Quality");
def->tooltip = L("To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("wipe_before_external_loop", coBool);
def->label = L("Wipe before external loop");
def->category = L("Quality");
def->tooltip = L("To minimize visibility of potential overextrusion at the start of an external perimeter when printing with "
"Outer/Inner or Inner/Outer/Inner wall print order, the de-retraction is performed slightly on the inside from the "
"start of the external perimeter. That way any potential over extrusion is hidden from the outside surface.\n\n"
@ -5111,6 +5144,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("wipe_speed", coFloatOrPercent);
def->label = L("Wipe speed");
def->category = L("Speed");
def->tooltip = L("The wipe speed is determined by the speed setting specified in this configuration. "
"If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above. "
"The default value for this parameter is 80%.");
@ -5131,6 +5165,7 @@ void PrintConfigDef::init_fff_params()
def = this->add("skirt_start_angle", coFloat);
def->label = L("Skirt start point");
def->category = L("Support");
def->tooltip = L("Angle from the object center to skirt start point. Zero is the most right position, counter clockwise is positive angle.");
def->sidetext = u8"°"; // degrees, don't need translation
def->min = -180;