Skip to content

Commit 36144dc

Browse files
sergej-koscejevAlexander Pann
authored andcommitted
feat(diagram): a flag to suppress autolayout-on-init
Autolayout on init is run asynchronously and in case of a batch program that attempts to re-layout all diagrams, it would cause too many actions queued in EDT that later fail because the editor component was already disposed.
1 parent 71add6c commit 36144dc

File tree

3 files changed

+196
-13
lines changed

3 files changed

+196
-13
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ The format is *loosely* based on [Keep a Changelog](https://keepachangelog.com/e
66

77
## November 2025
88

9+
### Added
10+
11+
- *de.itemis.mps.editor.diagram.runtime* Add an experimental static flag to disable autolayout-on-init. Useful for batch autolayouting.
12+
913
### Fixed
1014

1115
- *de.slisson.mps.tables* IllegalArgumentException thrown when copy-paste support is not defined for a table node (#1650).

code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/jgraph.mps

Lines changed: 143 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -561,17 +561,31 @@
561561
</concept>
562562
</language>
563563
<language id="f2801650-65d5-424e-bb1b-463a8781b786" name="jetbrains.mps.baseLanguage.javadoc">
564+
<concept id="6832197706140518104" name="jetbrains.mps.baseLanguage.javadoc.structure.DocMethodParameterReference" flags="ng" index="zr_55" />
565+
<concept id="6832197706140518103" name="jetbrains.mps.baseLanguage.javadoc.structure.BaseParameterReference" flags="ng" index="zr_5a">
566+
<reference id="6832197706140518108" name="param" index="zr_51" />
567+
</concept>
564568
<concept id="5349172909345501395" name="jetbrains.mps.baseLanguage.javadoc.structure.BaseDocComment" flags="ng" index="P$AiS">
565569
<child id="8465538089690331502" name="body" index="TZ5H$" />
566570
<child id="5383422241790532083" name="tags" index="3nqlJM" />
567571
</concept>
568572
<concept id="5349172909345532724" name="jetbrains.mps.baseLanguage.javadoc.structure.MethodDocComment" flags="ng" index="P$JXv" />
573+
<concept id="8465538089690881930" name="jetbrains.mps.baseLanguage.javadoc.structure.ParameterBlockDocTag" flags="ng" index="TUZQ0">
574+
<property id="8465538089690881934" name="text" index="TUZQ4" />
575+
<child id="6832197706140518123" name="parameter" index="zr_5Q" />
576+
</concept>
569577
<concept id="8465538089690331500" name="jetbrains.mps.baseLanguage.javadoc.structure.CommentLine" flags="ng" index="TZ5HA">
570578
<child id="8970989240999019149" name="part" index="1dT_Ay" />
571579
</concept>
572580
<concept id="8465538089690331492" name="jetbrains.mps.baseLanguage.javadoc.structure.DeprecatedBlockDocTag" flags="ng" index="TZ5HI">
573581
<child id="2667874559098216723" name="text" index="3HnX3l" />
574582
</concept>
583+
<concept id="2217234381367049075" name="jetbrains.mps.baseLanguage.javadoc.structure.CodeInlineDocTag" flags="ng" index="VVOAv">
584+
<child id="3106559687488741665" name="line" index="2Xj1qM" />
585+
</concept>
586+
<concept id="8970989240999019145" name="jetbrains.mps.baseLanguage.javadoc.structure.InlineTagCommentLinePart" flags="ng" index="1dT_AA">
587+
<child id="6962838954693749192" name="tag" index="qph3F" />
588+
</concept>
575589
<concept id="8970989240999019143" name="jetbrains.mps.baseLanguage.javadoc.structure.TextCommentLinePart" flags="ng" index="1dT_AC">
576590
<property id="8970989240999019144" name="text" index="1dT_AB" />
577591
</concept>
@@ -1815,22 +1829,28 @@
18151829
</node>
18161830
</node>
18171831
</node>
1818-
<node concept="1Wc70l" id="45g3j8ig9Q0" role="3clFbw">
1819-
<node concept="2OqwBi" id="apJ4OPRaw4" role="3uHU7B">
1820-
<node concept="2OqwBi" id="apJ4OPOBNj" role="2Oq$k0">
1821-
<node concept="37vLTw" id="apJ4OPOB4K" role="2Oq$k0">
1822-
<ref role="3cqZAo" node="2ujdR6vx99S" resolve="node" />
1823-
</node>
1824-
<node concept="3CFZ6_" id="apJ4OPODML" role="2OqNvi">
1825-
<node concept="3CFYIy" id="apJ4OPOGy9" role="3CFYIz">
1826-
<ref role="3CFYIx" to="suqv:7L$rKAVfLie" resolve="LayoutMap" />
1832+
<node concept="1Wc70l" id="70jf6EckOtU" role="3clFbw">
1833+
<node concept="10M0yZ" id="70jf6EcluBR" role="3uHU7w">
1834+
<ref role="3cqZAo" node="2NK7RZ3folA" resolve="enableAutoLayoutOnInit" />
1835+
<ref role="1PxDUh" node="2NK7RZ3fioq" resolve="DiagramControls" />
1836+
</node>
1837+
<node concept="1Wc70l" id="45g3j8ig9Q0" role="3uHU7B">
1838+
<node concept="2OqwBi" id="apJ4OPRaw4" role="3uHU7B">
1839+
<node concept="2OqwBi" id="apJ4OPOBNj" role="2Oq$k0">
1840+
<node concept="37vLTw" id="apJ4OPOB4K" role="2Oq$k0">
1841+
<ref role="3cqZAo" node="2ujdR6vx99S" resolve="node" />
1842+
</node>
1843+
<node concept="3CFZ6_" id="apJ4OPODML" role="2OqNvi">
1844+
<node concept="3CFYIy" id="apJ4OPOGy9" role="3CFYIz">
1845+
<ref role="3CFYIx" to="suqv:7L$rKAVfLie" resolve="LayoutMap" />
1846+
</node>
18271847
</node>
18281848
</node>
1849+
<node concept="3w_OXm" id="apJ4OPRebI" role="2OqNvi" />
1850+
</node>
1851+
<node concept="37vLTw" id="45g3j8igcwp" role="3uHU7w">
1852+
<ref role="3cqZAo" node="45g3j8i6y_n" resolve="runLayouter" />
18291853
</node>
1830-
<node concept="3w_OXm" id="apJ4OPRebI" role="2OqNvi" />
1831-
</node>
1832-
<node concept="37vLTw" id="45g3j8igcwp" role="3uHU7w">
1833-
<ref role="3cqZAo" node="45g3j8i6y_n" resolve="runLayouter" />
18341854
</node>
18351855
</node>
18361856
</node>
@@ -152658,5 +152678,115 @@
152658152678
</node>
152659152679
</node>
152660152680
</node>
152681+
<node concept="312cEu" id="2NK7RZ3fioq">
152682+
<property role="TrG5h" value="DiagramControls" />
152683+
<node concept="Wx3nA" id="2NK7RZ3folA" role="jymVt">
152684+
<property role="TrG5h" value="enableAutoLayoutOnInit" />
152685+
<node concept="3Tm1VV" id="70jf6Echtow" role="1B3o_S" />
152686+
<node concept="10P_77" id="2NK7RZ3fols" role="1tU5fm" />
152687+
<node concept="3clFbT" id="70jf6Eclyjj" role="33vP2m">
152688+
<property role="3clFbU" value="true" />
152689+
</node>
152690+
</node>
152691+
<node concept="2tJIrI" id="2NK7RZ3folO" role="jymVt" />
152692+
<node concept="2YIFZL" id="2NK7RZ3fpGx" role="jymVt">
152693+
<property role="TrG5h" value="runWithoutAutoLayoutOnInit" />
152694+
<node concept="3clFbS" id="2NK7RZ3fpG$" role="3clF47">
152695+
<node concept="3cpWs8" id="2NK7RZ3fHrv" role="3cqZAp">
152696+
<node concept="3cpWsn" id="2NK7RZ3fHry" role="3cpWs9">
152697+
<property role="TrG5h" value="oldValue" />
152698+
<property role="3TUv4t" value="true" />
152699+
<node concept="10P_77" id="2NK7RZ3fHru" role="1tU5fm" />
152700+
<node concept="37vLTw" id="2NK7RZ3fHSM" role="33vP2m">
152701+
<ref role="3cqZAo" node="2NK7RZ3folA" resolve="enableAutoLayoutOnInit" />
152702+
</node>
152703+
</node>
152704+
</node>
152705+
<node concept="3J1_TO" id="2NK7RZ3fIoy" role="3cqZAp">
152706+
<node concept="3clFbS" id="2NK7RZ3fIo$" role="1zxBo7">
152707+
<node concept="3clFbF" id="2NK7RZ3fJ2R" role="3cqZAp">
152708+
<node concept="37vLTI" id="2NK7RZ3fLA7" role="3clFbG">
152709+
<node concept="3clFbT" id="2NK7RZ3fM32" role="37vLTx" />
152710+
<node concept="37vLTw" id="2NK7RZ3fJ2P" role="37vLTJ">
152711+
<ref role="3cqZAo" node="2NK7RZ3folA" resolve="enableAutoLayoutOnInit" />
152712+
</node>
152713+
</node>
152714+
</node>
152715+
<node concept="3clFbF" id="2NK7RZ3fOnX" role="3cqZAp">
152716+
<node concept="2OqwBi" id="2NK7RZ3fOT9" role="3clFbG">
152717+
<node concept="37vLTw" id="2NK7RZ3fOnV" role="2Oq$k0">
152718+
<ref role="3cqZAo" node="2NK7RZ3fqnT" resolve="runnable" />
152719+
</node>
152720+
<node concept="liA8E" id="2NK7RZ3fQPX" role="2OqNvi">
152721+
<ref role="37wK5l" to="wyt6:~Runnable.run()" resolve="run" />
152722+
</node>
152723+
</node>
152724+
</node>
152725+
</node>
152726+
<node concept="1wplmZ" id="2NK7RZ3fM3T" role="1zxBo6">
152727+
<node concept="3clFbS" id="2NK7RZ3fM3U" role="1wplMD">
152728+
<node concept="3clFbF" id="2NK7RZ3fMH9" role="3cqZAp">
152729+
<node concept="37vLTI" id="2NK7RZ3fMPc" role="3clFbG">
152730+
<node concept="37vLTw" id="2NK7RZ3fN47" role="37vLTx">
152731+
<ref role="3cqZAo" node="2NK7RZ3fHry" resolve="oldValue" />
152732+
</node>
152733+
<node concept="37vLTw" id="2NK7RZ3fMH8" role="37vLTJ">
152734+
<ref role="3cqZAo" node="2NK7RZ3folA" resolve="enableAutoLayoutOnInit" />
152735+
</node>
152736+
</node>
152737+
</node>
152738+
</node>
152739+
</node>
152740+
</node>
152741+
</node>
152742+
<node concept="3Tm1VV" id="2NK7RZ3foQm" role="1B3o_S" />
152743+
<node concept="3cqZAl" id="2NK7RZ3fpGl" role="3clF45" />
152744+
<node concept="37vLTG" id="2NK7RZ3fqnT" role="3clF46">
152745+
<property role="TrG5h" value="runnable" />
152746+
<node concept="3uibUv" id="2NK7RZ3fqnS" role="1tU5fm">
152747+
<ref role="3uigEE" to="wyt6:~Runnable" resolve="Runnable" />
152748+
</node>
152749+
</node>
152750+
<node concept="P$JXv" id="2NK7RZ3fqoO" role="lGtFl">
152751+
<node concept="TZ5HA" id="2NK7RZ3fqoP" role="TZ5H$">
152752+
<node concept="1dT_AC" id="2NK7RZ3fqoQ" role="1dT_Ay">
152753+
<property role="1dT_AB" value="Run " />
152754+
</node>
152755+
<node concept="1dT_AA" id="2NK7RZ3fqpo" role="1dT_Ay">
152756+
<node concept="VVOAv" id="2NK7RZ3fqpq" role="qph3F">
152757+
<node concept="TZ5HA" id="2NK7RZ3fqps" role="2Xj1qM">
152758+
<node concept="1dT_AC" id="2NK7RZ3fqpI" role="1dT_Ay">
152759+
<property role="1dT_AB" value="runnable" />
152760+
</node>
152761+
</node>
152762+
</node>
152763+
</node>
152764+
<node concept="1dT_AC" id="2NK7RZ3fqpn" role="1dT_Ay">
152765+
<property role="1dT_AB" value=" with 'autolayout on init', 'fit to size on init', etc. disabled. This is useful in headless" />
152766+
</node>
152767+
</node>
152768+
<node concept="TZ5HA" id="70jf6EciJsy" role="TZ5H$">
152769+
<node concept="1dT_AC" id="70jf6EciJsz" role="1dT_Ay">
152770+
<property role="1dT_AB" value="batch scenarios where multiple diagrams are being laid out. Since 'autolayout on init' is asynchronous, it would" />
152771+
</node>
152772+
</node>
152773+
<node concept="TZ5HA" id="70jf6EciJvA" role="TZ5H$">
152774+
<node concept="1dT_AC" id="70jf6EciJvB" role="1dT_Ay">
152775+
<property role="1dT_AB" value="interfere with the batch task." />
152776+
</node>
152777+
</node>
152778+
<node concept="TUZQ0" id="2NK7RZ3fqoR" role="3nqlJM">
152779+
<property role="TUZQ4" value="code to run" />
152780+
<node concept="zr_55" id="2NK7RZ3fqoT" role="zr_5Q">
152781+
<ref role="zr_51" node="2NK7RZ3fqnT" resolve="runnable" />
152782+
</node>
152783+
</node>
152784+
</node>
152785+
</node>
152786+
<node concept="3Tm1VV" id="2NK7RZ3fior" role="1B3o_S" />
152787+
<node concept="2AHcQZ" id="70jf6Ecn8Ru" role="2AJF6D">
152788+
<ref role="2AI5Lk" to="mhfm:~ApiStatus$Experimental" resolve="ApiStatus.Experimental" />
152789+
</node>
152790+
</node>
152661152791
</model>
152662152792

code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,55 @@
239239
<property role="15ShDY" value="Po4Z58IgBl/November" />
240240
<property role="15ShDw" value="2025" />
241241
</node>
242+
<node concept="15bAme" id="33F4acUOltN" role="15bAlL">
243+
<property role="15bAli" value="Po4Z58tnOE/added" />
244+
<node concept="2DRihI" id="33F4acUOltO" role="15bAlk">
245+
<node concept="15Ami3" id="33F4acUOltQ" role="1PaTwD">
246+
<node concept="37shsh" id="33F4acUOltR" role="15Aodc">
247+
<node concept="1dCxOk" id="33F4acUOlDd" role="37shsm">
248+
<property role="1XweGW" value="1144260c-e9a5-49a2-9add-39a1a1a7077e" />
249+
<property role="1XxBO9" value="de.itemis.mps.editor.diagram.runtime" />
250+
</node>
251+
</node>
252+
</node>
253+
<node concept="3oM_SD" id="33F4acUOlu5" role="1PaTwD">
254+
<property role="3oM_SC" value="Add" />
255+
</node>
256+
<node concept="3oM_SD" id="33F4acUOlu6" role="1PaTwD">
257+
<property role="3oM_SC" value="an" />
258+
</node>
259+
<node concept="3oM_SD" id="33F4acUOlDc" role="1PaTwD">
260+
<property role="3oM_SC" value="experimental" />
261+
</node>
262+
<node concept="3oM_SD" id="33F4acUOlu7" role="1PaTwD">
263+
<property role="3oM_SC" value="static" />
264+
</node>
265+
<node concept="3oM_SD" id="33F4acUOlu8" role="1PaTwD">
266+
<property role="3oM_SC" value="flag" />
267+
</node>
268+
<node concept="3oM_SD" id="33F4acUOlu9" role="1PaTwD">
269+
<property role="3oM_SC" value="to" />
270+
</node>
271+
<node concept="3oM_SD" id="33F4acUOlua" role="1PaTwD">
272+
<property role="3oM_SC" value="disable" />
273+
</node>
274+
<node concept="3oM_SD" id="33F4acUOlub" role="1PaTwD">
275+
<property role="3oM_SC" value="autolayout-on-init." />
276+
</node>
277+
<node concept="3oM_SD" id="33F4acUOluc" role="1PaTwD">
278+
<property role="3oM_SC" value="Useful" />
279+
</node>
280+
<node concept="3oM_SD" id="33F4acUOlzH" role="1PaTwD">
281+
<property role="3oM_SC" value="for" />
282+
</node>
283+
<node concept="3oM_SD" id="33F4acUOlzI" role="1PaTwD">
284+
<property role="3oM_SC" value="batch" />
285+
</node>
286+
<node concept="3oM_SD" id="33F4acUOlzJ" role="1PaTwD">
287+
<property role="3oM_SC" value="autolayouting." />
288+
</node>
289+
</node>
290+
</node>
242291
<node concept="15bAme" id="6Qwtr1aMjHq" role="15bAlL">
243292
<node concept="2DRihI" id="6Qwtr1aMjHr" role="15bAlk">
244293
<node concept="15Ami3" id="6Qwtr1aMjHt" role="1PaTwD">

0 commit comments

Comments
 (0)