@@ -49,6 +49,10 @@ struct SubmodelPreviewPane: UIViewRepresentable {
4949 let onToggleNode : ( Int ) -> Void
5050 let onAddNodes : ( [ Int ] ) -> Void
5151 var controller : SubmodelPreviewController ? = nil
52+ // Tap-to-toggle and marquee only make sense for a Ranges/Lines submodel;
53+ // a Sub-buffer submodel isn't defined by a node list, so there's nothing
54+ // for either gesture to edit (mirrors desktop's SubModelsPanel::CanEditPreviewNodes).
55+ var nodesEditable : Bool = true
5256
5357 func makeCoordinator( ) -> Coordinator {
5458 Coordinator ( parent: parentModelName)
@@ -78,6 +82,7 @@ struct SubmodelPreviewPane: UIViewRepresentable {
7882 context. coordinator. document = document
7983 context. coordinator. onToggleNode = onToggleNode
8084 context. coordinator. onAddNodes = onAddNodes
85+ context. coordinator. nodesEditable = nodesEditable
8186 controller? . coordinator = context. coordinator
8287
8388 let pinch = UIPinchGestureRecognizer (
@@ -135,6 +140,7 @@ struct SubmodelPreviewPane: UIViewRepresentable {
135140 context. coordinator. document = document
136141 context. coordinator. onToggleNode = onToggleNode
137142 context. coordinator. onAddNodes = onAddNodes
143+ context. coordinator. nodesEditable = nodesEditable
138144 controller? . coordinator = context. coordinator
139145 if context. coordinator. lastHighlight != highlightedNodes {
140146 context. coordinator. applyHighlights ( highlightedNodes)
@@ -158,6 +164,7 @@ struct SubmodelPreviewPane: UIViewRepresentable {
158164 var document : XLSequenceDocument ?
159165 var onToggleNode : ( ( Int ) -> Void ) ?
160166 var onAddNodes : ( ( [ Int ] ) -> Void ) ?
167+ var nodesEditable : Bool = true
161168 var lastHighlight : [ Int ] = [ ]
162169 private let parent : String
163170 private var pinchStartZoom : Float = 1.0
@@ -250,6 +257,7 @@ struct SubmodelPreviewPane: UIViewRepresentable {
250257 }
251258
252259 @objc func handleTap( _ g: UITapGestureRecognizer ) {
260+ guard nodesEditable else { return }
253261 guard let bridge, let view = g. view, let document else { return }
254262 let pt = g. location ( in: view)
255263 let n = bridge. nodeNearPoint ( pt,
@@ -267,6 +275,7 @@ struct SubmodelPreviewPane: UIViewRepresentable {
267275 }
268276
269277 @objc func handleMarquee( _ g: UILongPressGestureRecognizer ) {
278+ guard nodesEditable else { return }
270279 guard let view = g. view else { return }
271280 switch g. state {
272281 case . began:
0 commit comments