prevent switching to another sprite if a block editor is open

so local blocks of different sprites don't mix
pull/89/head
jmoenig 2019-10-15 08:22:21 +02:00
rodzic e5fd3d9f36
commit c0e3bbecca
3 zmienionych plików z 23 dodań i 5 usunięć

Wyświetl plik

@ -6,8 +6,9 @@
* accept a list of pixels in the SWITCH TO COSTUME block * accept a list of pixels in the SWITCH TO COSTUME block
* URLs in dialog boxes are now clickable and can open new browser tabs, thanks, Brian Broll! * URLs in dialog boxes are now clickable and can open new browser tabs, thanks, Brian Broll!
* **Notable Changes:** * **Notable Changes:**
* **Notable Fixes:**
* made "i" upvar inside FOR loop's C-Shape slot mutable by user script * made "i" upvar inside FOR loop's C-Shape slot mutable by user script
* prevent switching to another sprite if a block editor is open (so local blocks of different sprites don't mix)
* **Notable Fixes:**
* typing strings into the search-field again shows relevant blocks (regression from IME) * typing strings into the search-field again shows relevant blocks (regression from IME)
* fixed project dialog's search-field behevior (regression from IME) * fixed project dialog's search-field behevior (regression from IME)
* morphic collision detection off-by-1 fix, thanks, Dariusz! * morphic collision detection off-by-1 fix, thanks, Dariusz!
@ -20,6 +21,9 @@
* Galician, thanks, Bernat * Galician, thanks, Bernat
* Turkish, thanks, Turgut! * Turkish, thanks, Turgut!
### 2019-10-15
* gui: prevent switching to another sprite if a block editor is open (so local blocks of different sprites don't mix)
### 2019-10-14 ### 2019-10-14
* morphic: new "reactToInput" text-editing event * morphic: new "reactToInput" text-editing event
* objects: fixed #2485 (find blocks and text-entry mode feature) * objects: fixed #2485 (find blocks and text-entry mode feature)

Wyświetl plik

@ -9,7 +9,7 @@
<script type="text/javascript" src="src/blocks.js?version=2019-08-07"></script> <script type="text/javascript" src="src/blocks.js?version=2019-08-07"></script>
<script type="text/javascript" src="src/threads.js?version=2019-10-14"></script> <script type="text/javascript" src="src/threads.js?version=2019-10-14"></script>
<script type="text/javascript" src="src/objects.js?version=2019-10-14"></script> <script type="text/javascript" src="src/objects.js?version=2019-10-14"></script>
<script type="text/javascript" src="src/gui.js?version=2019-10-14"></script> <script type="text/javascript" src="src/gui.js?version=2019-10-15"></script>
<script type="text/javascript" src="src/paint.js?version=2019-06-27"></script> <script type="text/javascript" src="src/paint.js?version=2019-06-27"></script>
<script type="text/javascript" src="src/lists.js?version=2019-07-01"></script> <script type="text/javascript" src="src/lists.js?version=2019-07-01"></script>
<script type="text/javascript" src="src/byob.js?version=2019-07-24"></script> <script type="text/javascript" src="src/byob.js?version=2019-07-24"></script>

Wyświetl plik

@ -71,11 +71,12 @@ CommentMorph, CommandBlockMorph, BooleanSlotMorph, RingReporterSlotMorph,
BlockLabelPlaceHolderMorph, Audio, SpeechBubbleMorph, ScriptFocusMorph, BlockLabelPlaceHolderMorph, Audio, SpeechBubbleMorph, ScriptFocusMorph,
XML_Element, WatcherMorph, BlockRemovalDialogMorph, saveAs, TableMorph, XML_Element, WatcherMorph, BlockRemovalDialogMorph, saveAs, TableMorph,
isSnapObject, isRetinaEnabled, disableRetinaSupport, enableRetinaSupport, isSnapObject, isRetinaEnabled, disableRetinaSupport, enableRetinaSupport,
isRetinaSupported, SliderMorph, Animation, BoxMorph, MediaRecorder*/ isRetinaSupported, SliderMorph, Animation, BoxMorph, MediaRecorder,
BlockEditorMorph, BlockDialogMorph*/
// Global stuff //////////////////////////////////////////////////////// // Global stuff ////////////////////////////////////////////////////////
modules.gui = '2019-October-14'; modules.gui = '2019-October-15';
// Declarations // Declarations
@ -2151,6 +2152,19 @@ IDE_Morph.prototype.stopAllScripts = function () {
}; };
IDE_Morph.prototype.selectSprite = function (sprite) { IDE_Morph.prototype.selectSprite = function (sprite) {
// prevent switching to another sprite if a block editor is open
// so local blocks of different sprites don't mix
if (
detect(
this.world().children,
function (morph) {
return morph instanceof BlockEditorMorph ||
morph instanceof BlockDialogMorph;
}
)
) {
return;
}
if (this.currentSprite && this.currentSprite.scripts.focus) { if (this.currentSprite && this.currentSprite.scripts.focus) {
this.currentSprite.scripts.focus.stopEditing(); this.currentSprite.scripts.focus.stopEditing();
} }