diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 8e56787aeb..6934354a70 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,12 +1,18 @@
+---
+name: Bug report
+about: Create a report to help us fix issues.
+title: ''
+labels: 'Type: Bug'
+assignees: ''
+
+---
+
@@ -15,14 +21,17 @@ Thank you for using Cura!
(The version of the application this issue occurs with.)
**Platform**
-(Information about the operating system the issue occurs on. Include at least the operating system. In the case of visual glitches/issues, also include information about your graphics drivers and GPU.)
+(Information about the operating system the issue occurs on. Include at least the operating system and maybe GPU.)
**Printer**
-(Which printer was selected in Cura? If possible, please attach project file as .curaproject.3mf.zip.)
+(Which printer was selected in Cura?)
**Reproduction steps**
-1. Something you did.
-2. Something you did next.
+1. (Something you did.)
+2. (Something you did next.)
+
+**Screenshot(s)**
+(Image showing the problem, perhaps before/after images.)
**Actual results**
(What happens after the above steps have been followed.)
@@ -30,5 +39,11 @@ Thank you for using Cura!
**Expected results**
(What should happen after the above steps have been followed.)
+**Project file**
+(For slicing bugs, provide a project which clearly shows the bug, by going to File->Save. For big files you may need to use WeTransfer or similar file sharing sites.)
+
+**Log file**
+(See https://github.com/Ultimaker/Cura#logging-issues to find the log file to upload, or copy a relevant snippet from it.)
+
**Additional information**
-(Extra information relevant to the issue, like screenshots. Don't forget to attach the log files with this issue report.)
+(Extra information relevant to the issue.)
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
index 749b8037c1..6934354a70 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -14,10 +14,6 @@ Before filing, PLEASE check if the issue already exists (either open or closed)
Also, please note the application version in the title of the issue. For example: "[3.2.1] Cannot connect to 3rd-party printer". Please do NOT write things like "Request:" or "[BUG]" in the title; this is what labels are for.
-It is also helpful to attach a project (.3mf or .curaproject) file and Cura log file so we can debug issues quicker. Information about how to find the log file can be found at https://github.com/Ultimaker/Cura#logging-issues
-
-To upload a project, try changing the extension to e.g. .curaproject.3mf.zip so that GitHub accepts uploading the file. Otherwise, we recommend http://wetransfer.com, but other file hosts like Google Drive or Dropbox work well too.
-
Thank you for using Cura!
-->
@@ -25,14 +21,17 @@ Thank you for using Cura!
(The version of the application this issue occurs with.)
**Platform**
-(Information about the operating system the issue occurs on. Include at least the operating system. In the case of visual glitches/issues, also include information about your graphics drivers and GPU.)
+(Information about the operating system the issue occurs on. Include at least the operating system and maybe GPU.)
**Printer**
-(Which printer was selected in Cura? If possible, please attach project file as .curaproject.3mf.zip.)
+(Which printer was selected in Cura?)
**Reproduction steps**
-1. Something you did.
-2. Something you did next.
+1. (Something you did.)
+2. (Something you did next.)
+
+**Screenshot(s)**
+(Image showing the problem, perhaps before/after images.)
**Actual results**
(What happens after the above steps have been followed.)
@@ -40,5 +39,11 @@ Thank you for using Cura!
**Expected results**
(What should happen after the above steps have been followed.)
+**Project file**
+(For slicing bugs, provide a project which clearly shows the bug, by going to File->Save. For big files you may need to use WeTransfer or similar file sharing sites.)
+
+**Log file**
+(See https://github.com/Ultimaker/Cura#logging-issues to find the log file to upload, or copy a relevant snippet from it.)
+
**Additional information**
-(Extra information relevant to the issue, like screenshots. Don't forget to attach the log files with this issue report.)
+(Extra information relevant to the issue.)
diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py
index 1d85a1da54..1ec00787d7 100644
--- a/cura/CrashHandler.py
+++ b/cura/CrashHandler.py
@@ -25,6 +25,8 @@ from UM.View.GL.OpenGL import OpenGL
from UM.i18n import i18nCatalog
from UM.Resources import Resources
+from cura import ApplicationMetadata
+
catalog = i18nCatalog("cura")
MYPY = False
@@ -181,6 +183,7 @@ class CrashHandler:
self.cura_version = catalog.i18nc("@label unknown version of Cura", "Unknown")
crash_info = "" + catalog.i18nc("@label Cura version number", "Cura version") + ": " + str(self.cura_version) + "
"
+ crash_info += "" + catalog.i18nc("@label Cura build type", "Cura build type") + ": " + str(ApplicationMetadata.CuraBuildType) + "
"
crash_info += "" + catalog.i18nc("@label Type of platform", "Platform") + ": " + str(platform.platform()) + "
"
crash_info += "" + catalog.i18nc("@label", "Qt version") + ": " + str(QT_VERSION_STR) + "
"
crash_info += "" + catalog.i18nc("@label", "PyQt version") + ": " + str(PYQT_VERSION_STR) + "
"
@@ -191,6 +194,7 @@ class CrashHandler:
group.setLayout(layout)
self.data["cura_version"] = self.cura_version
+ self.data["cura_build_type"] = ApplicationMetadata.CuraBuildType
self.data["os"] = {"type": platform.system(), "version": platform.version()}
self.data["qt_version"] = QT_VERSION_STR
self.data["pyqt_version"] = PYQT_VERSION_STR
diff --git a/cura/Machines/MachineNode.py b/cura/Machines/MachineNode.py
index 8d69ffdc8d..92f71b409b 100644
--- a/cura/Machines/MachineNode.py
+++ b/cura/Machines/MachineNode.py
@@ -140,7 +140,7 @@ class MachineNode(ContainerNode):
elif groups_by_name[name].intent_category == "default": # Intent category should be stored as "default" if everything is default or as the intent if any of the extruder have an actual intent.
groups_by_name[name].intent_category = quality_changes.get("intent_category", "default")
- if quality_changes.get("position") is not None: # An extruder profile.
+ if quality_changes.get("position") is not None and quality_changes.get("position") != "None": # An extruder profile.
groups_by_name[name].metadata_per_extruder[int(quality_changes["position"])] = quality_changes
else: # Global profile.
groups_by_name[name].metadata_for_global = quality_changes
diff --git a/cura/Machines/Models/IntentModel.py b/cura/Machines/Models/IntentModel.py
index f5560bc94e..986f28a826 100644
--- a/cura/Machines/Models/IntentModel.py
+++ b/cura/Machines/Models/IntentModel.py
@@ -7,6 +7,7 @@ from PyQt5.QtCore import Qt, QObject, pyqtProperty, pyqtSignal
import cura.CuraApplication
from UM.Qt.ListModel import ListModel
from UM.Settings.ContainerRegistry import ContainerRegistry
+from UM.Logger import Logger
from cura.Machines.ContainerTree import ContainerTree
from cura.Machines.MaterialNode import MaterialNode
from cura.Machines.Models.MachineModelUtils import fetchLayerHeight
@@ -101,6 +102,9 @@ class IntentModel(ListModel):
for extruder in global_stack.extruderList:
active_variant_name = extruder.variant.getMetaDataEntry("name")
+ if active_variant_name not in machine_node.variants:
+ Logger.log("w", "Could not find the variant %s", active_variant_name)
+ continue
active_variant_node = machine_node.variants[active_variant_name]
active_material_node = active_variant_node.materials[extruder.material.getMetaDataEntry("base_file")]
nodes.add(active_material_node)
diff --git a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py
index 392df7bded..60be5bc8f3 100644
--- a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py
+++ b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py
@@ -154,7 +154,7 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice):
part = QHttpPart()
if not content_header.startswith("form-data;"):
- content_header = "form_data; " + content_header
+ content_header = "form-data; " + content_header
part.setHeader(QNetworkRequest.ContentDispositionHeader, content_header)
if content_type is not None:
diff --git a/cura/Settings/IntentManager.py b/cura/Settings/IntentManager.py
index 732e22d1bd..5133b401b4 100644
--- a/cura/Settings/IntentManager.py
+++ b/cura/Settings/IntentManager.py
@@ -39,7 +39,11 @@ class IntentManager(QObject):
# an empty list if nothing was found.
def intentMetadatas(self, definition_id: str, nozzle_name: str, material_base_file: str) -> List[Dict[str, Any]]:
intent_metadatas = [] # type: List[Dict[str, Any]]
- materials = ContainerTree.getInstance().machines[definition_id].variants[nozzle_name].materials
+ try:
+ materials = ContainerTree.getInstance().machines[definition_id].variants[nozzle_name].materials
+ except KeyError:
+ Logger.log("w", "Unable to find the machine %s or the variant %s", definition_id, nozzle_name)
+ materials = {}
if material_base_file not in materials:
return intent_metadatas
diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py
index d7a7586115..de6e270a86 100755
--- a/cura/Settings/MachineManager.py
+++ b/cura/Settings/MachineManager.py
@@ -1247,6 +1247,8 @@ class MachineManager(QObject):
if metadata_key in new_machine.getMetaData():
continue # Don't copy the already preset stuff.
new_machine.setMetaDataEntry(metadata_key, self._global_container_stack.getMetaDataEntry(metadata_key))
+ # Special case, group_id should be overwritten!
+ new_machine.setMetaDataEntry("group_id", self._global_container_stack.getMetaDataEntry("group_id"))
else:
Logger.log("i", "Found a %s with the key %s. Let's use it!", machine_name, self.activeMachineNetworkKey())
diff --git a/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py b/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py
index 9152ab65f9..7d9af10925 100644
--- a/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py
+++ b/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py
@@ -1,7 +1,7 @@
# Cura PostProcessingPlugin
# Author: Mathias Lyngklip Kjeldgaard
# Date: July 31, 2019
-# Modified: ---
+# Modified: November 26, 2019
# Description: This plugin displayes the remaining time on the LCD of the printer
# using the estimated print-time generated by Cura.
@@ -23,7 +23,7 @@ class DisplayRemainingTimeOnLCD(Script):
def getSettingDataString(self):
return """{
- "name":"Disaplay Remaining Time on LCD",
+ "name":"Display Remaining Time on LCD",
"key":"DisplayRemainingTimeOnLCD",
"metadata": {},
"version": 2,
@@ -32,7 +32,7 @@ class DisplayRemainingTimeOnLCD(Script):
"TurnOn":
{
"label": "Enable",
- "description": "When enabled, It will write Time Left: HHMMSS on the display",
+ "description": "When enabled, It will write Time Left: HHMMSS on the display. This is updated every layer.",
"type": "bool",
"default_value": false
}
diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py
index 499214a0e9..17b4de88dd 100644
--- a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py
+++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py
@@ -219,7 +219,7 @@ class PauseAtHeight(Script):
current_height = current_z - layer_0_z
if current_height < pause_height:
- break # Try the next layer.
+ continue # Scan the enitre layer, z-changes are not always on the same/first line.
# Pause at layer
else:
diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py
index acab445fd6..af8a8b9853 100755
--- a/plugins/SliceInfoPlugin/SliceInfo.py
+++ b/plugins/SliceInfoPlugin/SliceInfo.py
@@ -18,6 +18,8 @@ from UM.Logger import Logger
from UM.PluginRegistry import PluginRegistry
from UM.Qt.Duration import DurationFormat
+from cura import ApplicationMetadata
+
from .SliceInfoJob import SliceInfoJob
@@ -119,6 +121,7 @@ class SliceInfo(QObject, Extension):
data["time_stamp"] = time.time()
data["schema_version"] = 0
data["cura_version"] = application.getVersion()
+ data["cura_build_type"] = ApplicationMetadata.CuraBuildType
active_mode = Application.getInstance().getPreferences().getValue("cura/active_mode")
if active_mode == 0:
diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py
index 1151d7101a..305cce16c6 100644
--- a/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py
+++ b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py
@@ -239,7 +239,7 @@ class VersionUpgrade41to42(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
- parser = configparser.ConfigParser(interpolation = None)
+ parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser.read_string(serialized)
# Update version number.
diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py
index c15f1e0468..d6489f6d8b 100644
--- a/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py
+++ b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py
@@ -104,7 +104,7 @@ class VersionUpgrade42to43(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
- parser = configparser.ConfigParser(interpolation = None)
+ parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser.read_string(serialized)
# Update version number.
diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py
index 40927fe3a0..8b69852cb2 100644
--- a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py
+++ b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py
@@ -52,7 +52,7 @@ class VersionUpgrade43to44(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
- parser = configparser.ConfigParser(interpolation = None)
+ parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser.read_string(serialized)
# Update version number.
diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py
index 948751ab8b..52b204affc 100644
--- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py
+++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py
@@ -1104,6 +1104,7 @@ class XmlMaterialProfile(InstanceContainer):
"anti ooze retract speed": "material_anti_ooze_retraction_speed",
"break preparation position": "material_break_preparation_retracted_position",
"break preparation speed": "material_break_preparation_speed",
+ "break preparation temperature": "material_break_preparation_temperature",
"break position": "material_break_retracted_position",
"break speed": "material_break_speed",
"break temperature": "material_break_temperature"
diff --git a/resources/definitions/creality_ender3.def.json b/resources/definitions/creality_ender3.def.json
index 691d590caa..2e2bebb798 100644
--- a/resources/definitions/creality_ender3.def.json
+++ b/resources/definitions/creality_ender3.def.json
@@ -9,9 +9,14 @@
},
"overrides": {
"machine_name": { "default_value": "Creality Ender-3" },
- "machine_width": { "default_value": 220 },
- "machine_depth": { "default_value": 220 },
+ "machine_width": { "default_value": 235 },
+ "machine_depth": { "default_value": 235 },
"machine_height": { "default_value": 250 },
+ "machine_disallowed_areas": {
+ "default_value": [
+ [[-117.5, 117.5], [-117.5, 108], [117.5, 108], [117.5, 117.5]],
+ [[-117.5, -108], [-117.5, -117.5], [117.5, -117.5], [117.5, -108]]
+ ]},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
@@ -22,4 +27,4 @@
"gantry_height": { "value": 25 }
}
-}
\ No newline at end of file
+}
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json
index 8d39f11c4c..1c84e99d24 100644
--- a/resources/definitions/fdmprinter.def.json
+++ b/resources/definitions/fdmprinter.def.json
@@ -2337,6 +2337,20 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
+ "material_break_preparation_temperature":
+ {
+ "label": "Break Preparation Temperature",
+ "description": "The temperature used to purge material, should be roughly equal to the highest possible printing temperature.",
+ "type": "float",
+ "unit": "°C",
+ "default_value": 50,
+ "value": "material_print_temperature",
+ "enabled": false,
+ "minimum_value": "-273.15",
+ "maximum_value_warning": "300",
+ "settable_per_mesh": false,
+ "settable_per_extruder": true
+ },
"material_break_retracted_position":
{
"label": "Break Retracted Position",
@@ -2695,7 +2709,6 @@
"minimum_value": "0",
"minimum_value_warning": "line_width * 1.5",
"maximum_value_warning": "10",
- "enabled": false,
"settable_per_mesh": false,
"settable_per_extruder": true
},
@@ -7123,6 +7136,17 @@
"enabled": "bridge_settings_enabled",
"settable_per_mesh": true
},
+ "bridge_sparse_infill_max_density":
+ {
+ "label": "Bridge Sparse Infill Max Density",
+ "description": "Maximum density of infill considered to be sparse. Skin over sparse infill is considered to be unsupported and so may be treated as a bridge skin.",
+ "unit": "%",
+ "type": "float",
+ "default_value": 0,
+ "minimum_value": "0",
+ "enabled": "bridge_settings_enabled",
+ "settable_per_mesh": true
+ },
"bridge_wall_coast":
{
"label": "Bridge Wall Coasting",
diff --git a/resources/definitions/vertex_k8400.def.json b/resources/definitions/vertex_k8400.def.json
index b2a6374f83..bbeb8510ba 100644
--- a/resources/definitions/vertex_k8400.def.json
+++ b/resources/definitions/vertex_k8400.def.json
@@ -50,10 +50,10 @@
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
- "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."
+ "default_value": "M104 T0 S{material_print_temperature_layer_0}\nG28 ;Home extruder\nG90 ;Absolute positioning\nM82 ;Extruder in absolute mode\nG1 Z1 F100\nG92 E0 ;Reset extruder position\nM109 T0 S{material_print_temperature_layer_0}\nG1 E20 F100\nG92 E0 ;Reset extruder position"
},
"machine_end_gcode": {
- "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
+ "default_value": "G1 X0 Y0 Z130 ;Get extruder out of way\nM107 ;Turn off fan\n;Disable all extruders\nG91 ;Relative positioning\nT0\nG1 E-1 ;Reduce filament pressure\nM104 T0 S0\nG90 ;Absolute positioning\nG92 E0 ;Reset extruder position\nM140 S0 ;Disable heated bed\nM84 ;Turn steppers off"
}
}
}
\ No newline at end of file
diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po
index 8956c138ef..f971746925 100644
--- a/resources/i18n/es_ES/cura.po
+++ b/resources/i18n/es_ES/cura.po
@@ -2890,7 +2890,7 @@ msgstr "Coste del filamento"
#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276
msgctxt "@label"
msgid "Filament weight"
-msgstr "Anchura del filamento"
+msgstr "Peso del filamento"
#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294
msgctxt "@label"
diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml
index f13f9e0ce9..8dcf60018f 100644
--- a/resources/qml/Cura.qml
+++ b/resources/qml/Cura.qml
@@ -21,7 +21,8 @@ UM.MainWindow
id: base
// Cura application window title
- title: catalog.i18nc("@title:window", "Ultimaker Cura")
+ title: PrintInformation.jobName + " - " + catalog.i18nc("@title:window", CuraApplication.applicationDisplayName)
+
backgroundColor: UM.Theme.getColor("viewport_background")
UM.I18nCatalog
diff --git a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml
index dfc6e3a9ca..6fe9607274 100644
--- a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml
+++ b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml
@@ -177,6 +177,7 @@ UM.Dialog
return catalog.i18nc("@action:label", "Extruder %1").arg(extruder_id)
}
font.bold: true
+ enabled: modelData.isEnabled
}
Row
{
@@ -194,6 +195,7 @@ UM.Dialog
return catalog.i18nc("@action:label", "Material")
}
width: Math.floor(scroll.width / 3) | 0
+ enabled: modelData.isEnabled
}
Label
{
@@ -205,7 +207,7 @@ UM.Dialog
}
return materialName
}
-
+ enabled: modelData.isEnabled
width: Math.floor(scroll.width / 3) | 0
}
}
diff --git a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml
index e4a7a98308..fce616472f 100644
--- a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml
+++ b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml
@@ -91,7 +91,8 @@ Item
// individual item has a dynamic change on its visibility, the ListView doesn't redraw itself.
// The default value of cacheBuffer is platform-dependent, so we explicitly disable it here.
cacheBuffer: 0
-
+ boundsBehavior: Flickable.StopAtBounds
+ flickDeceleration: 20000 // To prevent the flicking behavior.
model: UM.DefinitionContainersModel
{
id: machineDefinitionsModel
diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml
index 95eff0465a..5a4f5ec7b7 100644
--- a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml
+++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml
@@ -71,7 +71,8 @@ Item
section.property: "modelData.sectionName"
section.criteria: ViewSection.FullString
section.delegate: sectionHeading
-
+ boundsBehavior: Flickable.StopAtBounds
+ flickDeceleration: 20000 // To prevent the flicking behavior.
cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item.
Component.onCompleted: