kopia lustrzana https://github.com/backface/turtlestitch
				
				
				
			rebind (relabel) recursive calls when duplicating a custom block definition
							rodzic
							
								
									ab09e949c5
								
							
						
					
					
						commit
						8f5a166f01
					
				|  | @ -6,6 +6,7 @@ | |||
|     * undelete sprites | ||||
| * **Notable Changes:** | ||||
|     * optimized special cases for COMBINE (sum, product, min, max) by up to 34 x | ||||
|     *  rebind (relabel) recursive calls when duplicating a custom block definition  | ||||
|     * custom block label parts inside the prototype (in the block editor) are now displayed the same as in block instances | ||||
|     * variadic ring inputs are now arranged vertically (e.g. the reporter rings in PIPE) | ||||
|     * changed zebra-coloring for yellow custom block prototypes (in the block editor) so the hat block changes the shade, not the prototype | ||||
|  | @ -21,6 +22,7 @@ | |||
| * gui: added "trash is empty" information, commented out for now | ||||
| * gui: changed gui strings for undelete feature | ||||
| * updated German translation | ||||
| * byob: rebind (relabel) recursive calls when duplicating a custom block definition  | ||||
| 
 | ||||
| ### 2021-03-04 | ||||
| * gui: added trash button for undeleting sprites | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ | |||
|         <script src="src/gui.js?version=2021-03-05"></script> | ||||
|         <script src="src/paint.js?version=2020-05-17"></script> | ||||
|         <script src="src/lists.js?version=2021-02-20"></script> | ||||
|         <script src="src/byob.js?version=2021-03-01"></script> | ||||
|         <script src="src/byob.js?version=2021-03-05"></script> | ||||
|         <script src="src/tables.js?version=2021-03-05"></script> | ||||
|         <script src="src/sketch.js?version=2020-07-13"></script> | ||||
|         <script src="src/video.js?version=2019-06-27"></script> | ||||
|  |  | |||
							
								
								
									
										21
									
								
								src/byob.js
								
								
								
								
							
							
						
						
									
										21
									
								
								src/byob.js
								
								
								
								
							|  | @ -106,7 +106,7 @@ WatcherMorph, XML_Serializer, SnapTranslator*/ | |||
| 
 | ||||
| // Global stuff ////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| modules.byob = '2021-March-01'; | ||||
| modules.byob = '2021-March-05'; | ||||
| 
 | ||||
| // Declarations
 | ||||
| 
 | ||||
|  | @ -1255,8 +1255,18 @@ CustomCommandBlockMorph.prototype.duplicateBlockDefinition = function () { | |||
|         def = this.isGlobal ? this.definition : rcvr.getMethod(this.blockSpec), | ||||
|         dup = def.copyAndBindTo(rcvr), | ||||
|         spec = dup.spec, | ||||
|         exp = dup.body.expression, | ||||
|         count = 1; | ||||
|      | ||||
| 
 | ||||
|     function rebindRecursiveCalls(topBlock) { | ||||
|         topBlock.forAllChildren(morph => { | ||||
|             if (morph.definition === def) { | ||||
|                 morph.definition = dup; | ||||
|                 morph.refresh(); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     if (this.isGlobal) { | ||||
|         ide.stage.globalBlocks.push(dup); | ||||
|     } else { | ||||
|  | @ -1269,6 +1279,13 @@ CustomCommandBlockMorph.prototype.duplicateBlockDefinition = function () { | |||
|         dup.spec = spec + ' (' + count + ')'; | ||||
|     } | ||||
| 
 | ||||
|     // rebind recursive calls
 | ||||
|     dup.scripts.forEach(script => rebindRecursiveCalls(script)); | ||||
|     if (exp instanceof BlockMorph) { | ||||
|         rebindRecursiveCalls(exp); | ||||
|     } | ||||
|   | ||||
| 
 | ||||
|     ide.flushPaletteCache(); | ||||
|     ide.refreshPalette(); | ||||
|     ide.recordUnsavedChanges(); | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 jmoenig
						jmoenig