@@ -101,11 +101,23 @@ window.initProcedsBlockly = function(customStatementType, initialize = () => {})
101
101
xmlBlock . setAttribute ( 'type' , 'variables_get' ) ;
102
102
103
103
var callback = Blockly . ContextMenu . callbackFactory ( procedureBlock , xmlBlock ) ;
104
-
104
+
105
105
return function ( ) {
106
106
var block = callback ( ) ;
107
107
block . $parent = procedureBlock . id ;
108
- block . moveBy ( procedureBlock . width , - 14 ) ;
108
+
109
+ try {
110
+ Blockly . Events . disabled_ = 1 ;
111
+ const posParent = procedureBlock . getRelativeToSurfaceXY ( ) ;
112
+ const pos = block . getRelativeToSurfaceXY ( ) ;
113
+ let width = procedureBlock . width ;
114
+ const returnBlock = procedureBlock . inputList . find ( ( it ) => it . name === "RETURN" ) ;
115
+ if ( returnBlock ) width -= returnBlock . renderWidth - 8 ;
116
+
117
+ block . moveBy ( posParent . x - pos . x + width + 16 , posParent . y - pos . y + 6 ) ;
118
+ } finally {
119
+ Blockly . Events . disabled_ = 0 ;
120
+ }
109
121
} ;
110
122
} ;
111
123
@@ -173,7 +185,7 @@ window.initProcedsBlockly = function(customStatementType, initialize = () => {})
173
185
newName = getAvailableName ( self , newName ) ;
174
186
175
187
self . arguments_ [ i ] = newName ;
176
-
188
+
177
189
var blocks = self . workspace . getAllBlocks ( ) ;
178
190
for ( block of blocks ) {
179
191
if ( block . type === self . callType_ && block . getProcedureCall ( ) === self . getProcedureDef ( ) [ 0 ] ) {
@@ -200,7 +212,7 @@ window.initProcedsBlockly = function(customStatementType, initialize = () => {})
200
212
. appendField ( nameField , 'ARG' + i )
201
213
. appendField ( createCallButton )
202
214
. appendField ( removeParameterButton ) ;
203
-
215
+
204
216
self . moveInputBefore ( id , 'STACK' ) ;
205
217
} ;
206
218
@@ -305,7 +317,22 @@ window.initProcedsBlockly = function(customStatementType, initialize = () => {})
305
317
var xmlBlock = goog . dom . createDom ( 'block' , null , xmlMutation ) ;
306
318
xmlBlock . setAttribute ( 'type' , self . callType_ ) ;
307
319
308
- Blockly . ContextMenu . callbackFactory ( self , xmlBlock ) ( ) ;
320
+ const block = Blockly . ContextMenu . callbackFactory ( self , xmlBlock ) ( ) ;
321
+
322
+ try {
323
+ const procedureBlock = self ;
324
+
325
+ Blockly . Events . disabled_ = 1 ;
326
+ const posParent = procedureBlock . getRelativeToSurfaceXY ( ) ;
327
+ const pos = block . getRelativeToSurfaceXY ( ) ;
328
+ let width = procedureBlock . width ;
329
+ const returnBlock = procedureBlock . inputList . find ( ( it ) => it . name === "RETURN" ) ;
330
+ if ( returnBlock ) width -= returnBlock . renderWidth - 8 ;
331
+
332
+ block . moveBy ( posParent . x - pos . x + width + 16 , posParent . y - pos . y + 6 ) ;
333
+ } finally {
334
+ Blockly . Events . disabled_ = 0 ;
335
+ }
309
336
}
310
337
) ;
311
338
input . appendField ( createCallButton ) ;
0 commit comments