|  | @@ -250,7 +250,9 @@ static void fil_unload_menu();
 | 
												
													
														
															|  |  static void lcd_disable_farm_mode();
 |  |  static void lcd_disable_farm_mode();
 | 
												
													
														
															|  |  static void lcd_set_fan_check();
 |  |  static void lcd_set_fan_check();
 | 
												
													
														
															|  |  static void lcd_cutter_enabled();
 |  |  static void lcd_cutter_enabled();
 | 
												
													
														
															|  | 
 |  | +#ifdef SNMM
 | 
												
													
														
															|  |  static char snmm_stop_print_menu();
 |  |  static char snmm_stop_print_menu();
 | 
												
													
														
															|  | 
 |  | +#endif //SNMM
 | 
												
													
														
															|  |  #ifdef SDCARD_SORT_ALPHA
 |  |  #ifdef SDCARD_SORT_ALPHA
 | 
												
													
														
															|  |   static void lcd_sort_type_set();
 |  |   static void lcd_sort_type_set();
 | 
												
													
														
															|  |  #endif
 |  |  #endif
 | 
												
											
												
													
														
															|  | @@ -1056,7 +1058,7 @@ static void lcd_status_screen()
 | 
												
													
														
															|  |  	}
 |  |  	}
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |  	if (current_click
 |  |  	if (current_click
 | 
												
													
														
															|  | -		&& (lcd_commands_type != LcdCommands::StopPrint) //click is aborted unless stop print finishes
 |  | 
 | 
												
													
														
															|  | 
 |  | +		// && (lcd_commands_type != LcdCommands::StopPrint) //click is aborted unless stop print finishes
 | 
												
													
														
															|  |  		&& ( menu_block_entering_on_serious_errors == SERIOUS_ERR_NONE ) // or a serious error blocks entering the menu
 |  |  		&& ( menu_block_entering_on_serious_errors == SERIOUS_ERR_NONE ) // or a serious error blocks entering the menu
 | 
												
													
														
															|  |  	)
 |  |  	)
 | 
												
													
														
															|  |  	{
 |  |  	{
 | 
												
											
												
													
														
															|  | @@ -1466,7 +1468,7 @@ void lcd_commands()
 | 
												
													
														
															|  |  		}
 |  |  		}
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |  #endif // not SNMM
 |  |  #endif // not SNMM
 | 
												
													
														
															|  | -
 |  | 
 | 
												
													
														
															|  | 
 |  | +/* 
 | 
												
													
														
															|  |  	if (lcd_commands_type == LcdCommands::StopPrint)   /// stop print
 |  |  	if (lcd_commands_type == LcdCommands::StopPrint)   /// stop print
 | 
												
													
														
															|  |  	{
 |  |  	{
 | 
												
													
														
															|  |  		
 |  |  		
 | 
												
											
												
													
														
															|  | @@ -1558,6 +1560,7 @@ void lcd_commands()
 | 
												
													
														
															|  |  			lcd_commands_step = 7; 
 |  |  			lcd_commands_step = 7; 
 | 
												
													
														
															|  |  		}
 |  |  		}
 | 
												
													
														
															|  |  	}
 |  |  	}
 | 
												
													
														
															|  | 
 |  | +*/
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |  	if (lcd_commands_type == LcdCommands::FarmModeConfirm)   /// farm mode confirm
 |  |  	if (lcd_commands_type == LcdCommands::FarmModeConfirm)   /// farm mode confirm
 | 
												
													
														
															|  |  	{
 |  |  	{
 | 
												
											
												
													
														
															|  | @@ -6051,7 +6054,7 @@ void bowden_menu() {
 | 
												
													
														
															|  |  	}
 |  |  	}
 | 
												
													
														
															|  |  }
 |  |  }
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  | -//#ifdef SNMM
 |  | 
 | 
												
													
														
															|  | 
 |  | +#ifdef SNMM
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |  static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
 |  |  static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
 | 
												
													
														
															|  |  	lcd_clear();
 |  |  	lcd_clear();
 | 
												
											
												
													
														
															|  | @@ -6102,6 +6105,8 @@ static char snmm_stop_print_menu() { //menu for choosing which filaments will be
 | 
												
													
														
															|  |  	
 |  |  	
 | 
												
													
														
															|  |  }
 |  |  }
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  | 
 |  | +#endif //SNMM
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  |  //! @brief Select one of numbered items
 |  |  //! @brief Select one of numbered items
 | 
												
													
														
															|  |  //!
 |  |  //!
 | 
												
													
														
															|  |  //! Create list of items with header. Header can not be selected.
 |  |  //! Create list of items with header. Header can not be selected.
 | 
												
											
												
													
														
															|  | @@ -7320,7 +7325,6 @@ void lcd_print_stop()
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |      // Clear any saved printing state
 |  |      // Clear any saved printing state
 | 
												
													
														
															|  |      cancel_saved_printing();
 |  |      cancel_saved_printing();
 | 
												
													
														
															|  | -	cancel_heatup = true;
 |  | 
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |      // Abort the planner/queue/sd
 |  |      // Abort the planner/queue/sd
 | 
												
													
														
															|  |      planner_abort_hard();
 |  |      planner_abort_hard();
 | 
												
											
												
													
														
															|  | @@ -7331,19 +7335,41 @@ void lcd_print_stop()
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |      CRITICAL_SECTION_END;
 |  |      CRITICAL_SECTION_END;
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  | 
 |  | +#ifdef MESH_BED_LEVELING
 | 
												
													
														
															|  | 
 |  | +    mbl.active = false; //also prevents undoing the mbl compensation a second time in the second planner_abort_hard()
 | 
												
													
														
															|  | 
 |  | +#endif
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  |  	lcd_setstatuspgm(_T(MSG_PRINT_ABORTED));
 |  |  	lcd_setstatuspgm(_T(MSG_PRINT_ABORTED));
 | 
												
													
														
															|  |  	stoptime = _millis();
 |  |  	stoptime = _millis();
 | 
												
													
														
															|  |  	unsigned long t = (stoptime - starttime - pause_time) / 1000; //time in s
 |  |  	unsigned long t = (stoptime - starttime - pause_time) / 1000; //time in s
 | 
												
													
														
															|  |  	pause_time = 0;
 |  |  	pause_time = 0;
 | 
												
													
														
															|  |  	save_statistics(total_filament_used, t);
 |  |  	save_statistics(total_filament_used, t);
 | 
												
													
														
															|  | -	lcd_return_to_status();
 |  | 
 | 
												
													
														
															|  | -	lcd_ignore_click(true);
 |  | 
 | 
												
													
														
															|  | -	lcd_commands_step = 0;
 |  | 
 | 
												
													
														
															|  | -	lcd_commands_type = LcdCommands::StopPrint;
 |  | 
 | 
												
													
														
															|  | -	// Turn off the print fan
 |  | 
 | 
												
													
														
															|  | -	SET_OUTPUT(FAN_PIN);
 |  | 
 | 
												
													
														
															|  | -	WRITE(FAN_PIN, 0);
 |  | 
 | 
												
													
														
															|  | -	fanSpeed = 0;
 |  | 
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    lcd_commands_step = 0;
 | 
												
													
														
															|  | 
 |  | +    lcd_commands_type = LcdCommands::Idle;
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    lcd_cooldown(); //turns off heaters and fan; goes to status screen.
 | 
												
													
														
															|  | 
 |  | +    cancel_heatup = true; //unroll temperature wait loop stack.
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    current_position[Z_AXIS] += 10; //lift Z.
 | 
												
													
														
															|  | 
 |  | +    plan_buffer_line_curposXYZE(manual_feedrate[Z_AXIS] / 60, active_extruder);
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) //if axis are homed, move to parked position.
 | 
												
													
														
															|  | 
 |  | +    {
 | 
												
													
														
															|  | 
 |  | +        current_position[X_AXIS] = X_CANCEL_POS;
 | 
												
													
														
															|  | 
 |  | +        current_position[Y_AXIS] = Y_CANCEL_POS;
 | 
												
													
														
															|  | 
 |  | +        plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 | 
												
													
														
															|  | 
 |  | +    }
 | 
												
													
														
															|  | 
 |  | +    st_synchronize();
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    if (mmu_enabled) extr_unload(); //M702 C
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    finishAndDisableSteppers(); //M84
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    lcd_setstatuspgm(_T(WELCOME_MSG));
 | 
												
													
														
															|  | 
 |  | +    custom_message_type = CustomMsg::Status;
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +    planner_abort_hard(); //needs to be done since plan_buffer_line resets waiting_inside_plan_buffer_line_print_aborted to false. Also copies current to destination.
 | 
												
													
														
															|  |  }
 |  |  }
 | 
												
													
														
															|  |  
 |  |  
 | 
												
													
														
															|  |  void lcd_sdcard_stop()
 |  |  void lcd_sdcard_stop()
 |