summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmoenig <jens@moenig.org>2015-06-25 15:11:51 +0200
committerjmoenig <jens@moenig.org>2015-06-25 15:11:51 +0200
commit4c21c9f187033172fa58a1bd3100d7c494617f10 (patch)
tree306711248c182c434a64c662322d61013435fe7f
parent58cae438bbd48f4e08f265917d4aada9e06e6cb6 (diff)
downloadsnap-4c21c9f187033172fa58a1bd3100d7c494617f10.tar.gz
snap-4c21c9f187033172fa58a1bd3100d7c494617f10.zip
Revert to "new" for object creation
and prepare for new release
-rw-r--r--blocks.js68
-rw-r--r--byob.js28
-rw-r--r--gui.js22
-rwxr-xr-xhistory.txt7
-rw-r--r--lists.js22
-rw-r--r--objects.js24
-rw-r--r--paint.js14
-rw-r--r--store.js5
-rw-r--r--widgets.js20
-rwxr-xr-x[-rw-r--r--]xml.js8
10 files changed, 111 insertions, 107 deletions
diff --git a/blocks.js b/blocks.js
index d023db8..ec01f96 100644
--- a/blocks.js
+++ b/blocks.js
@@ -155,8 +155,7 @@ DialogBoxMorph, BlockInputFragmentMorph, PrototypeHatBlockMorph, Costume*/
// Global stuff ////////////////////////////////////////////////////////
-modules.blocks = '2015-June-08';
-
+modules.blocks = '2015-June-25';
var SyntaxElementMorph;
var BlockMorph;
@@ -240,7 +239,7 @@ WorldMorph.prototype.customMorphs = function () {
// SyntaxElementMorph inherits from Morph:
-SyntaxElementMorph.prototype = Object.create(Morph.prototype);
+SyntaxElementMorph.prototype = new Morph();
SyntaxElementMorph.prototype.constructor = SyntaxElementMorph;
SyntaxElementMorph.uber = Morph.prototype;
@@ -360,6 +359,10 @@ SyntaxElementMorph.prototype.init = function () {
this.cachedInputs = null;
};
+// SyntaxElementMorph stepping:
+
+SyntaxElementMorph.prototype.step = null;
+
// SyntaxElementMorph accessing:
SyntaxElementMorph.prototype.parts = function () {
@@ -621,10 +624,6 @@ SyntaxElementMorph.prototype.topBlock = function () {
return this;
};
-// SyntaxElementMorph stepping:
-
-SyntaxElementMorph.prototype.step = null;
-
// SyntaxElementMorph drag & drop:
SyntaxElementMorph.prototype.reactToGrabOf = function (grabbedMorph) {
@@ -1429,11 +1428,11 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
false, // italic
false, // isNumeric
MorphicPreferences.isFlat ?
- new Point() : this.embossing, // shadowOffset
+ new Point() : this.embossing, // shadowOffset
this.color.darker(this.labelContrast), // shadowColor
new Color(255, 255, 255), // color
this.labelFontName // fontName
- );
+ );
}
return part;
};
@@ -1944,7 +1943,7 @@ SyntaxElementMorph.prototype.endLayout = function () {
// BlockMorph inherits from SyntaxElementMorph:
-BlockMorph.prototype = Object.create(SyntaxElementMorph.prototype);
+BlockMorph.prototype = new SyntaxElementMorph();
BlockMorph.prototype.constructor = BlockMorph;
BlockMorph.uber = SyntaxElementMorph.prototype;
@@ -2065,7 +2064,8 @@ BlockMorph.prototype.setSpec = function (spec) {
}
part = myself.labelPart(word);
myself.add(part);
- if (!(part instanceof CommandSlotMorph || part instanceof StringMorph)) {
+ if (!(part instanceof CommandSlotMorph ||
+ part instanceof StringMorph)) {
part.drawNew();
}
if (part instanceof RingMorph) {
@@ -3266,7 +3266,7 @@ BlockMorph.prototype.snap = function () {
// CommandBlockMorph inherits from BlockMorph:
-CommandBlockMorph.prototype = Object.create(BlockMorph.prototype);
+CommandBlockMorph.prototype = new BlockMorph();
CommandBlockMorph.prototype.constructor = CommandBlockMorph;
CommandBlockMorph.uber = BlockMorph.prototype;
@@ -3946,7 +3946,7 @@ CommandBlockMorph.prototype.drawBottomRightEdge = function (context) {
// HatBlockMorph inherits from CommandBlockMorph:
-HatBlockMorph.prototype = Object.create(CommandBlockMorph.prototype);
+HatBlockMorph.prototype = new CommandBlockMorph();
HatBlockMorph.prototype.constructor = HatBlockMorph;
HatBlockMorph.uber = CommandBlockMorph.prototype;
@@ -4124,7 +4124,7 @@ HatBlockMorph.prototype.drawTopLeftEdge = function (context) {
// ReporterBlockMorph inherits from BlockMorph:
-ReporterBlockMorph.prototype = Object.create(BlockMorph.prototype);
+ReporterBlockMorph.prototype = new BlockMorph();
ReporterBlockMorph.prototype.constructor = ReporterBlockMorph;
ReporterBlockMorph.uber = BlockMorph.prototype;
@@ -4648,7 +4648,7 @@ ReporterBlockMorph.prototype.drawDiamond = function (context) {
// RingMorph inherits from ReporterBlockMorph:
-RingMorph.prototype = Object.create(ReporterBlockMorph.prototype);
+RingMorph.prototype = new ReporterBlockMorph();
RingMorph.prototype.constructor = RingMorph;
RingMorph.uber = ReporterBlockMorph.prototype;
@@ -4785,7 +4785,7 @@ RingMorph.prototype.fixBlockColor = function (nearest, isForced) {
// ScriptsMorph inherits from FrameMorph:
-ScriptsMorph.prototype = Object.create(FrameMorph.prototype);
+ScriptsMorph.prototype = new FrameMorph();
ScriptsMorph.prototype.constructor = ScriptsMorph;
ScriptsMorph.uber = FrameMorph.prototype;
@@ -5325,7 +5325,7 @@ ScriptsMorph.prototype.reactToDropOf = function (droppedMorph, hand) {
// ArgMorph inherits from SyntaxElementMorph:
-ArgMorph.prototype = Object.create(SyntaxElementMorph.prototype);
+ArgMorph.prototype = new SyntaxElementMorph();
ArgMorph.prototype.constructor = ArgMorph;
ArgMorph.uber = SyntaxElementMorph.prototype;
@@ -5438,7 +5438,7 @@ ArgMorph.prototype.isEmptySlot = function () {
// CommandSlotMorph inherits from ArgMorph:
-CommandSlotMorph.prototype = Object.create(ArgMorph.prototype);
+CommandSlotMorph.prototype = new ArgMorph();
CommandSlotMorph.prototype.constructor = CommandSlotMorph;
CommandSlotMorph.uber = ArgMorph.prototype;
@@ -5888,7 +5888,7 @@ CommandSlotMorph.prototype.drawEdges = function (context) {
// RingCommandSlotMorph inherits from CommandSlotMorph:
-RingCommandSlotMorph.prototype = Object.create(CommandSlotMorph.prototype);
+RingCommandSlotMorph.prototype = new CommandSlotMorph();
RingCommandSlotMorph.prototype.constructor = RingCommandSlotMorph;
RingCommandSlotMorph.uber = CommandSlotMorph.prototype;
@@ -6044,7 +6044,7 @@ RingCommandSlotMorph.prototype.drawFlat = function (context) {
// CSlotMorph inherits from CommandSlotMorph:
-CSlotMorph.prototype = Object.create(CommandSlotMorph.prototype);
+CSlotMorph.prototype = new CommandSlotMorph();
CSlotMorph.prototype.constructor = CSlotMorph;
CSlotMorph.uber = CommandSlotMorph.prototype;
@@ -6467,7 +6467,7 @@ CSlotMorph.prototype.drawBottomEdge = function (context) {
// InputSlotMorph inherits from ArgMorph:
-InputSlotMorph.prototype = Object.create(ArgMorph.prototype);
+InputSlotMorph.prototype = new ArgMorph();
InputSlotMorph.prototype.constructor = InputSlotMorph;
InputSlotMorph.uber = ArgMorph.prototype;
@@ -7403,7 +7403,7 @@ InputSlotMorph.prototype.drawRoundBorder = function (context) {
// TemplateSlotMorph inherits from ArgMorph:
-TemplateSlotMorph.prototype = Object.create(ArgMorph.prototype);
+TemplateSlotMorph.prototype = new ArgMorph();
TemplateSlotMorph.prototype.constructor = TemplateSlotMorph;
TemplateSlotMorph.uber = ArgMorph.prototype;
@@ -7507,7 +7507,7 @@ TemplateSlotMorph.prototype.drawRounded = ReporterBlockMorph
// BooleanSlotMorph inherits from ArgMorph:
-BooleanSlotMorph.prototype = Object.create(ArgMorph.prototype);
+BooleanSlotMorph.prototype = new ArgMorph();
BooleanSlotMorph.prototype.constructor = BooleanSlotMorph;
BooleanSlotMorph.uber = ArgMorph.prototype;
@@ -7664,7 +7664,7 @@ BooleanSlotMorph.prototype.isEmptySlot = function () {
// ArrowMorph inherits from Morph:
-ArrowMorph.prototype = Object.create(Morph.prototype);
+ArrowMorph.prototype = new Morph();
ArrowMorph.prototype.constructor = ArrowMorph;
ArrowMorph.uber = Morph.prototype;
@@ -7734,7 +7734,7 @@ ArrowMorph.prototype.drawNew = function () {
// TextSlotMorph inherits from InputSlotMorph:
-TextSlotMorph.prototype = Object.create(InputSlotMorph.prototype);
+TextSlotMorph.prototype = new InputSlotMorph();
TextSlotMorph.prototype.constructor = TextSlotMorph;
TextSlotMorph.uber = InputSlotMorph.prototype;
@@ -7817,7 +7817,7 @@ TextSlotMorph.prototype.layoutChanged = function () {
// SymbolMorph inherits from Morph:
-SymbolMorph.prototype = Object.create(Morph.prototype);
+SymbolMorph.prototype = new Morph();
SymbolMorph.prototype.constructor = SymbolMorph;
SymbolMorph.uber = Morph.prototype;
@@ -9110,7 +9110,7 @@ SymbolMorph.prototype.drawSymbolRobot = function (canvas, color) {
// ColorSlotMorph inherits from ArgMorph:
-ColorSlotMorph.prototype = Object.create(ArgMorph.prototype);
+ColorSlotMorph.prototype = new ArgMorph();
ColorSlotMorph.prototype.constructor = ColorSlotMorph;
ColorSlotMorph.uber = ArgMorph.prototype;
@@ -9218,7 +9218,7 @@ ColorSlotMorph.prototype.drawRectBorder =
// BlockHighlightMorph inherits from Morph:
-BlockHighlightMorph.prototype = Object.create(Morph.prototype);
+BlockHighlightMorph.prototype = new Morph();
BlockHighlightMorph.prototype.constructor = BlockHighlightMorph;
BlockHighlightMorph.uber = Morph.prototype;
@@ -9243,7 +9243,7 @@ function BlockHighlightMorph() {
// MultiArgMorph inherits from ArgMorph:
-MultiArgMorph.prototype = Object.create(ArgMorph.prototype);
+MultiArgMorph.prototype = new ArgMorph();
MultiArgMorph.prototype.constructor = MultiArgMorph;
MultiArgMorph.uber = ArgMorph.prototype;
@@ -9673,7 +9673,7 @@ MultiArgMorph.prototype.isEmptySlot = function () {
// ArgLabelMorph inherits from ArgMorph:
-ArgLabelMorph.prototype = Object.create(ArgMorph.prototype);
+ArgLabelMorph.prototype = new ArgMorph();
ArgLabelMorph.prototype.constructor = ArgLabelMorph;
ArgLabelMorph.uber = ArgMorph.prototype;
@@ -9803,7 +9803,7 @@ ArgLabelMorph.prototype.isEmptySlot = function () {
// FunctionSlotMorph inherits from ArgMorph:
-FunctionSlotMorph.prototype = Object.create(ArgMorph.prototype);
+FunctionSlotMorph.prototype = new ArgMorph();
FunctionSlotMorph.prototype.constructor = FunctionSlotMorph;
FunctionSlotMorph.uber = ArgMorph.prototype;
@@ -10184,7 +10184,7 @@ FunctionSlotMorph.prototype.drawDiamond = function (context) {
// ReporterSlotMorph inherits from FunctionSlotMorph:
-ReporterSlotMorph.prototype = Object.create(FunctionSlotMorph.prototype);
+ReporterSlotMorph.prototype = new FunctionSlotMorph();
ReporterSlotMorph.prototype.constructor = ReporterSlotMorph;
ReporterSlotMorph.uber = FunctionSlotMorph.prototype;
@@ -10267,7 +10267,7 @@ ReporterSlotMorph.prototype.fixLayout = function () {
// ReporterSlotMorph inherits from FunctionSlotMorph:
-RingReporterSlotMorph.prototype = Object.create(ReporterSlotMorph.prototype);
+RingReporterSlotMorph.prototype = new ReporterSlotMorph();
RingReporterSlotMorph.prototype.constructor = RingReporterSlotMorph;
RingReporterSlotMorph.uber = ReporterSlotMorph.prototype;
@@ -10655,7 +10655,7 @@ RingReporterSlotMorph.prototype.drawDiamond = function (context) {
// CommentMorph inherits from BoxMorph:
-CommentMorph.prototype = Object.create(BoxMorph.prototype);
+CommentMorph.prototype = new BoxMorph();
CommentMorph.prototype.constructor = CommentMorph;
CommentMorph.uber = BoxMorph.prototype;
diff --git a/byob.js b/byob.js
index 32d8969..4c39872 100644
--- a/byob.js
+++ b/byob.js
@@ -106,7 +106,7 @@ SymbolMorph, isNil*/
// Global stuff ////////////////////////////////////////////////////////
-modules.byob = '2015-May-23';
+modules.byob = '2015-June-25';
// Declarations
@@ -379,7 +379,7 @@ CustomBlockDefinition.prototype.scriptsPicture = function () {
// CustomCommandBlockMorph inherits from CommandBlockMorph:
-CustomCommandBlockMorph.prototype = Object.create(CommandBlockMorph.prototype);
+CustomCommandBlockMorph.prototype = new CommandBlockMorph();
CustomCommandBlockMorph.prototype.constructor = CustomCommandBlockMorph;
CustomCommandBlockMorph.uber = CommandBlockMorph.prototype;
@@ -896,7 +896,7 @@ CustomCommandBlockMorph.prototype.alternatives = function () {
// CustomReporterBlockMorph inherits from ReporterBlockMorph:
-CustomReporterBlockMorph.prototype = Object.create(ReporterBlockMorph.prototype);
+CustomReporterBlockMorph.prototype = new ReporterBlockMorph();
CustomReporterBlockMorph.prototype.constructor = CustomReporterBlockMorph;
CustomReporterBlockMorph.uber = ReporterBlockMorph.prototype;
@@ -1028,7 +1028,7 @@ CustomReporterBlockMorph.prototype.alternatives
// JaggedBlockMorph inherits from ReporterBlockMorph:
-JaggedBlockMorph.prototype = Object.create(ReporterBlockMorph.prototype);
+JaggedBlockMorph.prototype = new ReporterBlockMorph();
JaggedBlockMorph.prototype.constructor = JaggedBlockMorph;
JaggedBlockMorph.uber = ReporterBlockMorph.prototype;
@@ -1177,7 +1177,7 @@ JaggedBlockMorph.prototype.drawEdges = function (context) {
// BlockDialogMorph inherits from DialogBoxMorph:
-BlockDialogMorph.prototype = Object.create(DialogBoxMorph.prototype);
+BlockDialogMorph.prototype = new DialogBoxMorph();
BlockDialogMorph.prototype.constructor = BlockDialogMorph;
BlockDialogMorph.uber = DialogBoxMorph.prototype;
@@ -1624,7 +1624,7 @@ BlockDialogMorph.prototype.fixLayout = function () {
// BlockEditorMorph inherits from DialogBoxMorph:
-BlockEditorMorph.prototype = Object.create(DialogBoxMorph.prototype);
+BlockEditorMorph.prototype = new DialogBoxMorph();
BlockEditorMorph.prototype.constructor = BlockEditorMorph;
BlockEditorMorph.uber = DialogBoxMorph.prototype;
@@ -1936,7 +1936,7 @@ BlockEditorMorph.prototype.fixLayout = function () {
// PrototypeHatBlockMorph inherits from HatBlockMorph:
-PrototypeHatBlockMorph.prototype = Object.create(HatBlockMorph.prototype);
+PrototypeHatBlockMorph.prototype = new HatBlockMorph();
PrototypeHatBlockMorph.prototype.constructor = PrototypeHatBlockMorph;
PrototypeHatBlockMorph.uber = HatBlockMorph.prototype;
@@ -2146,7 +2146,7 @@ BlockLabelFragment.prototype.setSingleInputType = function (type) {
// BlockLabelFragmentMorph inherits from StringMorph:
-BlockLabelFragmentMorph.prototype = Object.create(StringMorph.prototype);
+BlockLabelFragmentMorph.prototype = new StringMorph();
BlockLabelFragmentMorph.prototype.constructor = BlockLabelFragmentMorph;
BlockLabelFragmentMorph.uber = StringMorph.prototype;
@@ -2268,7 +2268,7 @@ BlockLabelFragmentMorph.prototype.userMenu = function () {
// BlockLabelPlaceHolderMorph inherits from StringMorph:
-BlockLabelPlaceHolderMorph.prototype = Object.create(StringMorph.prototype);
+BlockLabelPlaceHolderMorph.prototype = new StringMorph();
BlockLabelPlaceHolderMorph.prototype.constructor = BlockLabelPlaceHolderMorph;
BlockLabelPlaceHolderMorph.uber = StringMorph.prototype;
@@ -2396,7 +2396,7 @@ BlockLabelPlaceHolderMorph.prototype.updateBlockLabel
// BlockInputFragmentMorph inherits from TemplateSlotMorph:
-BlockInputFragmentMorph.prototype = Object.create(TemplateSlotMorph.prototype);
+BlockInputFragmentMorph.prototype = new TemplateSlotMorph();
BlockInputFragmentMorph.prototype.constructor = BlockInputFragmentMorph;
BlockInputFragmentMorph.uber = TemplateSlotMorph.prototype;
@@ -2426,7 +2426,7 @@ BlockInputFragmentMorph.prototype.updateBlockLabel
// InputSlotDialogMorph inherits from DialogBoxMorph:
-InputSlotDialogMorph.prototype = Object.create(DialogBoxMorph.prototype);
+InputSlotDialogMorph.prototype = new DialogBoxMorph();
InputSlotDialogMorph.prototype.constructor = InputSlotDialogMorph;
InputSlotDialogMorph.uber = DialogBoxMorph.prototype;
@@ -3026,7 +3026,7 @@ InputSlotDialogMorph.prototype.show = function () {
// VariableDialogMorph inherits from DialogBoxMorph:
-VariableDialogMorph.prototype = Object.create(DialogBoxMorph.prototype);
+VariableDialogMorph.prototype = new DialogBoxMorph();
VariableDialogMorph.prototype.constructor = VariableDialogMorph;
VariableDialogMorph.uber = DialogBoxMorph.prototype;
@@ -3145,7 +3145,7 @@ VariableDialogMorph.prototype.fixLayout = function () {
// BlockExportDialogMorph inherits from DialogBoxMorph:
-BlockExportDialogMorph.prototype = Object.create(DialogBoxMorph.prototype);
+BlockExportDialogMorph.prototype = new DialogBoxMorph();
BlockExportDialogMorph.prototype.constructor = BlockExportDialogMorph;
BlockExportDialogMorph.uber = DialogBoxMorph.prototype;
@@ -3327,7 +3327,7 @@ BlockExportDialogMorph.prototype.fixLayout
// BlockImportDialogMorph inherits from DialogBoxMorph
// and pseudo-inherits from BlockExportDialogMorph:
-BlockImportDialogMorph.prototype = Object.create(DialogBoxMorph.prototype);
+BlockImportDialogMorph.prototype = new DialogBoxMorph();
BlockImportDialogMorph.prototype.constructor = BlockImportDialogMorph;
BlockImportDialogMorph.uber = DialogBoxMorph.prototype;
diff --git a/gui.js b/gui.js
index 89e2d89..f50fd47 100644
--- a/gui.js
+++ b/gui.js
@@ -69,7 +69,7 @@ SpeechBubbleMorph*/
// Global stuff ////////////////////////////////////////////////////////
-modules.gui = '2015-May-18';
+modules.gui = '2015-June-25';
// Declarations
@@ -88,7 +88,7 @@ var JukeboxMorph;
// IDE_Morph inherits from Morph:
-IDE_Morph.prototype = Object.create(Morph.prototype);
+IDE_Morph.prototype = new Morph();
IDE_Morph.prototype.constructor = IDE_Morph;
IDE_Morph.uber = Morph.prototype;
@@ -2614,7 +2614,7 @@ IDE_Morph.prototype.aboutSnap = function () {
module, btn1, btn2, btn3, btn4, licenseBtn, translatorsBtn,
world = this.world();
- aboutTxt = 'Snap! 4.0\nBuild Your Own Blocks\n\n'
+ aboutTxt = 'Snap! 4.0.1\nBuild Your Own Blocks\n\n'
+ 'Copyright \u24B8 2015 Jens M\u00F6nig and '
+ 'Brian Harvey\n'
+ 'jens@moenig.org, bh@cs.berkeley.edu\n\n'
@@ -2648,7 +2648,7 @@ IDE_Morph.prototype.aboutSnap = function () {
creditsTxt = localize('Contributors')
+ '\n\nNathan Dinsmore: Saving/Loading, Snap-Logo Design, '
- + 'countless bugfixes'
+ + 'countless bugfixes and optimizations'
+ '\nKartik Chandra: Paint Editor'
+ '\nMichael Ball: Time/Date UI, many bugfixes'
+ '\n"Ava" Yuan Yuan: Graphic Effects'
@@ -4274,7 +4274,7 @@ IDE_Morph.prototype.prompt = function (message, callback, choices, key) {
// ProjectDialogMorph inherits from DialogBoxMorph:
-ProjectDialogMorph.prototype = Object.create(DialogBoxMorph.prototype);
+ProjectDialogMorph.prototype = new DialogBoxMorph();
ProjectDialogMorph.prototype.constructor = ProjectDialogMorph;
ProjectDialogMorph.uber = DialogBoxMorph.prototype;
@@ -5181,7 +5181,7 @@ ProjectDialogMorph.prototype.fixLayout = function () {
// SpriteIconMorph inherits from ToggleButtonMorph (Widgets)
-SpriteIconMorph.prototype = Object.create(ToggleButtonMorph.prototype);
+SpriteIconMorph.prototype = new ToggleButtonMorph();
SpriteIconMorph.prototype.constructor = SpriteIconMorph;
SpriteIconMorph.uber = ToggleButtonMorph.prototype;
@@ -5571,7 +5571,7 @@ SpriteIconMorph.prototype.copySound = function (sound) {
// CostumeIconMorph inherits from ToggleButtonMorph (Widgets)
// ... and copies methods from SpriteIconMorph
-CostumeIconMorph.prototype = Object.create(ToggleButtonMorph.prototype);
+CostumeIconMorph.prototype = new ToggleButtonMorph();
CostumeIconMorph.prototype.constructor = CostumeIconMorph;
CostumeIconMorph.uber = ToggleButtonMorph.prototype;
@@ -5782,7 +5782,7 @@ CostumeIconMorph.prototype.prepareToBeGrabbed = function () {
// TurtleIconMorph inherits from ToggleButtonMorph (Widgets)
// ... and copies methods from SpriteIconMorph
-TurtleIconMorph.prototype = Object.create(ToggleButtonMorph.prototype);
+TurtleIconMorph.prototype = new ToggleButtonMorph();
TurtleIconMorph.prototype.constructor = TurtleIconMorph;
TurtleIconMorph.uber = ToggleButtonMorph.prototype;
@@ -5965,7 +5965,7 @@ TurtleIconMorph.prototype.userMenu = function () {
// WardrobeMorph inherits from ScrollFrameMorph
-WardrobeMorph.prototype = Object.create(ScrollFrameMorph.prototype);
+WardrobeMorph.prototype = new ScrollFrameMorph();
WardrobeMorph.prototype.constructor = WardrobeMorph;
WardrobeMorph.uber = ScrollFrameMorph.prototype;
@@ -6148,7 +6148,7 @@ WardrobeMorph.prototype.reactToDropOf = function (icon) {
// SoundIconMorph inherits from ToggleButtonMorph (Widgets)
// ... and copies methods from SpriteIconMorph
-SoundIconMorph.prototype = Object.create(ToggleButtonMorph.prototype);
+SoundIconMorph.prototype = new ToggleButtonMorph();
SoundIconMorph.prototype.constructor = SoundIconMorph;
SoundIconMorph.uber = ToggleButtonMorph.prototype;
@@ -6356,7 +6356,7 @@ SoundIconMorph.prototype.prepareToBeGrabbed = function () {
// JukeboxMorph instance creation
-JukeboxMorph.prototype = Object.create(ScrollFrameMorph.prototype);
+JukeboxMorph.prototype = new ScrollFrameMorph();
JukeboxMorph.prototype.constructor = JukeboxMorph;
JukeboxMorph.uber = ScrollFrameMorph.prototype;
diff --git a/history.txt b/history.txt
index 1262a28..9d9c00c 100755
--- a/history.txt
+++ b/history.txt
@@ -2516,3 +2516,10 @@ ______
150608
------
* Blocks: Fixed #820
+
+150625
+------
+* Morphic, Objects, Blocks, XML: Optimizations and dramatic speed-up. Thanks, Nathan!!
+* Objects: push maximum clone count up to 1000, tweak Note::play
+
+=== Release v4.0.1 ===
diff --git a/lists.js b/lists.js
index 769b8b3..6fc9545 100644
--- a/lists.js
+++ b/lists.js
@@ -7,7 +7,7 @@
written by Jens Mönig and Brian Harvey
jens@moenig.org, bh@cs.berkeley.edu
- Copyright (C) 2014 by Jens Mönig and Brian Harvey
+ Copyright (C) 2015 by Jens Mönig and Brian Harvey
This file is part of Snap!.
@@ -61,7 +61,7 @@ PushButtonMorph, SyntaxElementMorph, Color, Point, WatcherMorph,
StringMorph, SpriteMorph, ScrollFrameMorph, CellMorph, ArrowMorph,
MenuMorph, snapEquals, Morph, isNil, localize, MorphicPreferences*/
-modules.lists = '2014-November-20';
+modules.lists = '2015-June-25';
var List;
var ListWatcherMorph;
@@ -363,7 +363,7 @@ List.prototype.equalTo = function (other) {
// ListWatcherMorph inherits from BoxMorph:
-ListWatcherMorph.prototype = Object.create(BoxMorph.prototype);
+ListWatcherMorph.prototype = new BoxMorph();
ListWatcherMorph.prototype.constructor = ListWatcherMorph;
ListWatcherMorph.uber = BoxMorph.prototype;
@@ -388,13 +388,6 @@ ListWatcherMorph.prototype.init = function (list, parentCell) {
this.lastCell = null;
this.parentCell = parentCell || null; // for circularity detection
- ListWatcherMorph.uber.init.call(
- this,
- SyntaxElementMorph.prototype.rounding,
- 1.000001, // shadow bug in Chrome,
- new Color(120, 120, 120)
- );
-
// elements declarations
this.label = new StringMorph(
localize('length: ') + this.list.length(),
@@ -443,6 +436,13 @@ ListWatcherMorph.prototype.init = function (list, parentCell) {
this.plusButton.drawNew();
this.plusButton.fixLayout();
+ ListWatcherMorph.uber.init.call(
+ this,
+ SyntaxElementMorph.prototype.rounding,
+ 1.000001, // shadow bug in Chrome,
+ new Color(120, 120, 120)
+ );
+
this.color = new Color(220, 220, 220);
this.isDraggable = true;
this.setExtent(new Point(80, 70).multiplyBy(
@@ -634,7 +634,7 @@ ListWatcherMorph.prototype.setStartIndex = function (index) {
};
ListWatcherMorph.prototype.fixLayout = function () {
- if (!this.label) return;
+ if (!this.label) {return; }
Morph.prototype.trackChanges = false;
if (this.frame) {
this.arrangeCells();
diff --git a/objects.js b/objects.js
index 1e8060e..8eeb236 100644
--- a/objects.js
+++ b/objects.js
@@ -125,7 +125,7 @@ PrototypeHatBlockMorph*/
// Global stuff ////////////////////////////////////////////////////////
-modules.objects = '2015-May-18';
+modules.objects = '2015-June-25';
var SpriteMorph;
var StageMorph;
@@ -147,7 +147,7 @@ var SpriteHighlightMorph;
// SpriteMorph inherits from PenMorph:
-SpriteMorph.prototype = Object.create(PenMorph.prototype);
+SpriteMorph.prototype = new PenMorph();
SpriteMorph.prototype.constructor = SpriteMorph;
SpriteMorph.uber = PenMorph.prototype;
@@ -2718,7 +2718,7 @@ SpriteMorph.prototype.remove = function () {
SpriteMorph.prototype.createClone = function () {
var stage = this.parentThatIsA(StageMorph);
- if (stage && stage.cloneCount <= 300) {
+ if (stage && stage.cloneCount <= 1000) {
this.fullCopy().clonify(stage);
}
};
@@ -4289,7 +4289,7 @@ SpriteMorph.prototype.doScreenshot = function (imgSource, data) {
// SpriteHighlightMorph inherits from Morph:
-SpriteHighlightMorph.prototype = Object.create(Morph.prototype);
+SpriteHighlightMorph.prototype = new Morph();
SpriteHighlightMorph.prototype.constructor = SpriteHighlightMorph;
SpriteHighlightMorph.uber = Morph.prototype;
@@ -4307,7 +4307,7 @@ function SpriteHighlightMorph() {
// StageMorph inherits from FrameMorph:
-StageMorph.prototype = Object.create(FrameMorph.prototype);
+StageMorph.prototype = new FrameMorph();
StageMorph.prototype.constructor = StageMorph;
StageMorph.uber = FrameMorph.prototype;
@@ -5669,7 +5669,7 @@ StageMorph.prototype.replaceDoubleDefinitionsFor
// SpriteBubbleMorph inherits from SpeechBubbleMorph:
-SpriteBubbleMorph.prototype = Object.create(SpeechBubbleMorph.prototype);
+SpriteBubbleMorph.prototype = new SpeechBubbleMorph();
SpriteBubbleMorph.prototype.constructor = SpriteBubbleMorph;
SpriteBubbleMorph.uber = SpeechBubbleMorph.prototype;
@@ -6168,7 +6168,7 @@ Costume.prototype.isTainted = function () {
// SVG_Costume inherits from Costume:
-SVG_Costume.prototype = Object.create(Costume.prototype);
+SVG_Costume.prototype = new Costume();
SVG_Costume.prototype.constructor = SVG_Costume;
SVG_Costume.uber = Costume.prototype;
@@ -6219,7 +6219,7 @@ SVG_Costume.prototype.shrinkToFit = function (extentPoint) {
// CostumeEditorMorph inherits from Morph:
-CostumeEditorMorph.prototype = Object.create(Morph.prototype);
+CostumeEditorMorph.prototype = new Morph();
CostumeEditorMorph.prototype.constructor = CostumeEditorMorph;
CostumeEditorMorph.uber = Morph.prototype;
@@ -6429,7 +6429,7 @@ Note.prototype.play = function () {
if (!this.oscillator.stop) {
this.oscillator.stop = this.oscillator.noteOff;
}
- this.oscillator.type = 0;
+ this.oscillator.type = 'sine';
this.oscillator.frequency.value =
Math.pow(2, (this.pitch - 69) / 12) * 440;
this.oscillator.connect(this.gainNode);
@@ -6454,7 +6454,7 @@ Note.prototype.stop = function () {
// CellMorph inherits from BoxMorph:
-CellMorph.prototype = Object.create(BoxMorph.prototype);
+CellMorph.prototype = new BoxMorph();
CellMorph.prototype.constructor = CellMorph;
CellMorph.uber = BoxMorph.prototype;
@@ -6794,7 +6794,7 @@ CellMorph.prototype.mouseClickLeft = function (pos) {
// WatcherMorph inherits from BoxMorph:
-WatcherMorph.prototype = Object.create(BoxMorph.prototype);
+WatcherMorph.prototype = new BoxMorph();
WatcherMorph.prototype.constructor = WatcherMorph;
WatcherMorph.uber = BoxMorph.prototype;
@@ -7281,7 +7281,7 @@ WatcherMorph.prototype.drawNew = function () {
// StagePrompterMorph inherits from BoxMorph:
-StagePrompterMorph.prototype = Object.create(BoxMorph.prototype);
+StagePrompterMorph.prototype = new BoxMorph();
StagePrompterMorph.prototype.constructor = StagePrompterMorph;
StagePrompterMorph.uber = BoxMorph.prototype;
diff --git a/paint.js b/paint.js
index 6e4ae8b..6d9b09c 100644
--- a/paint.js
+++ b/paint.js
@@ -5,7 +5,7 @@
inspired by the Scratch paint editor.
written by Kartik Chandra
- Copyright (C) 2014 by Kartik Chandra
+ Copyright (C) 2015 by Kartik Chandra
This file is part of Snap!.
@@ -69,7 +69,7 @@
// Global stuff ////////////////////////////////////////////////////////
-modules.paint = '2014-September-29';
+modules.paint = '2015-June-25';
// Declarations
@@ -81,7 +81,7 @@ var PaintColorPickerMorph;
// A complete paint editor
-PaintEditorMorph.prototype = Object.create(DialogBoxMorph.prototype);
+PaintEditorMorph.prototype = new DialogBoxMorph();
PaintEditorMorph.prototype.constructor = PaintEditorMorph;
PaintEditorMorph.uber = DialogBoxMorph.prototype;
@@ -92,7 +92,6 @@ function PaintEditorMorph() {
}
PaintEditorMorph.prototype.init = function () {
- PaintEditorMorph.uber.init.call(this);
// additional properties:
this.paper = null; // paint canvas
this.oncancel = null;
@@ -477,7 +476,7 @@ PaintEditorMorph.prototype.getUserColor = function () {
// A large hsl color picker
-PaintColorPickerMorph.prototype = Object.create(Morph.prototype);
+PaintColorPickerMorph.prototype = new Morph();
PaintColorPickerMorph.prototype.constructor = PaintColorPickerMorph;
PaintColorPickerMorph.uber = Morph.prototype;
@@ -486,7 +485,6 @@ function PaintColorPickerMorph(extent, action) {
}
PaintColorPickerMorph.prototype.init = function (extent, action) {
- PaintColorPickerMorph.uber.init.call(this);
this.setExtent(extent || new Point(200, 100));
this.action = action || nop;
this.drawNew();
@@ -554,7 +552,7 @@ PaintColorPickerMorph.prototype.mouseMove =
modify its image, based on a 'tool' property.
*/
-PaintCanvasMorph.prototype = Object.create(Morph.prototype);
+PaintCanvasMorph.prototype = new Morph();
PaintCanvasMorph.prototype.constructor = PaintCanvasMorph;
PaintCanvasMorph.uber = Morph.prototype;
@@ -563,7 +561,6 @@ function PaintCanvasMorph(shift) {
}
PaintCanvasMorph.prototype.init = function (shift) {
- PaintCanvasMorph.uber.init.call(this);
this.rotationCenter = new Point(240, 180);
this.dragRect = null;
this.previousDragPoint = null;
@@ -964,7 +961,6 @@ PaintCanvasMorph.prototype.buildContents = function () {
};
PaintCanvasMorph.prototype.drawNew = function () {
- if (!this.background) return;
var can = newCanvas(this.extent());
this.merge(this.background, can);
this.merge(this.paper, can);
diff --git a/store.js b/store.js
index a45c801..e73ba9f 100644
--- a/store.js
+++ b/store.js
@@ -61,7 +61,7 @@ SyntaxElementMorph, Variable*/
// Global stuff ////////////////////////////////////////////////////////
-modules.store = '2015-April-26';
+modules.store = '2015-June-25';
// XML_Serializer ///////////////////////////////////////////////////////
@@ -246,7 +246,7 @@ var SnapSerializer;
// SnapSerializer inherits from XML_Serializer:
-SnapSerializer.prototype = Object.create(XML_Serializer.prototype);
+SnapSerializer.prototype = new XML_Serializer();
SnapSerializer.prototype.constructor = SnapSerializer;
SnapSerializer.uber = XML_Serializer.prototype;
@@ -274,7 +274,6 @@ SnapSerializer.prototype.watcherLabels = {
// SnapSerializer instance creation:
function SnapSerializer() {
- XML_Serializer.call(this);
this.init();
}
diff --git a/widgets.js b/widgets.js
index 2f96f2c..a8644af 100644
--- a/widgets.js
+++ b/widgets.js
@@ -7,7 +7,7 @@
written by Jens Mönig
jens@moenig.org
- Copyright (C) 2014 by Jens Mönig
+ Copyright (C) 2015 by Jens Mönig
This file is part of Snap!.
@@ -74,7 +74,7 @@ HTMLCanvasElement, fontHeight, SymbolMorph, localize, SpeechBubbleMorph,
ArrowMorph, MenuMorph, isString, isNil, SliderMorph, MorphicPreferences,
ScrollFrameMorph*/
-modules.widgets = '2014-February-13';
+modules.widgets = '2015-June-25';
var PushButtonMorph;
var ToggleButtonMorph;
@@ -91,7 +91,7 @@ var InputFieldMorph;
// PushButtonMorph inherits from TriggerMorph:
-PushButtonMorph.prototype = Object.create(TriggerMorph.prototype);
+PushButtonMorph.prototype = new TriggerMorph();
PushButtonMorph.prototype.constructor = PushButtonMorph;
PushButtonMorph.uber = TriggerMorph.prototype;
@@ -476,7 +476,7 @@ PushButtonMorph.prototype.createLabel = function () {
// ToggleButtonMorph inherits from PushButtonMorph:
-ToggleButtonMorph.prototype = Object.create(PushButtonMorph.prototype);
+ToggleButtonMorph.prototype = new PushButtonMorph();
ToggleButtonMorph.prototype.constructor = ToggleButtonMorph;
ToggleButtonMorph.uber = PushButtonMorph.prototype;
@@ -900,7 +900,7 @@ ToggleButtonMorph.prototype.show = function () {
// TabMorph inherits from ToggleButtonMorph:
-TabMorph.prototype = Object.create(ToggleButtonMorph.prototype);
+TabMorph.prototype = new ToggleButtonMorph();
TabMorph.prototype.constructor = TabMorph;
TabMorph.uber = ToggleButtonMorph.prototype;
@@ -1022,7 +1022,7 @@ TabMorph.prototype.drawEdges = function (
// ToggleMorph inherits from PushButtonMorph:
-ToggleMorph.prototype = Object.create(PushButtonMorph.prototype);
+ToggleMorph.prototype = new PushButtonMorph();
ToggleMorph.prototype.constructor = ToggleMorph;
ToggleMorph.uber = PushButtonMorph.prototype;
@@ -1270,7 +1270,7 @@ ToggleMorph.prototype.show = ToggleButtonMorph.prototype.show;
// ToggleElementMorph inherits from TriggerMorph:
-ToggleElementMorph.prototype = Object.create(TriggerMorph.prototype);
+ToggleElementMorph.prototype = new TriggerMorph();
ToggleElementMorph.prototype.constructor = ToggleElementMorph;
ToggleElementMorph.uber = TriggerMorph.prototype;
@@ -1440,7 +1440,7 @@ ToggleElementMorph.prototype.mouseClickLeft
// DialogBoxMorph inherits from Morph:
-DialogBoxMorph.prototype = Object.create(Morph.prototype);
+DialogBoxMorph.prototype = new Morph();
DialogBoxMorph.prototype.constructor = DialogBoxMorph;
DialogBoxMorph.uber = Morph.prototype;
@@ -2866,7 +2866,7 @@ DialogBoxMorph.prototype.outlinePathBody = function (context, radius) {
// AlignmentMorph inherits from Morph:
-AlignmentMorph.prototype = Object.create(Morph.prototype);
+AlignmentMorph.prototype = new Morph();
AlignmentMorph.prototype.constructor = AlignmentMorph;
AlignmentMorph.uber = Morph.prototype;
@@ -2940,7 +2940,7 @@ AlignmentMorph.prototype.fixLayout = function () {
// InputFieldMorph inherits from Morph:
-InputFieldMorph.prototype = Object.create(Morph.prototype);
+InputFieldMorph.prototype = new Morph();
InputFieldMorph.prototype.constructor = InputFieldMorph;
InputFieldMorph.uber = Morph.prototype;
diff --git a/xml.js b/xml.js
index 16b03f0..b80f520 100644..100755
--- a/xml.js
+++ b/xml.js
@@ -7,7 +7,7 @@
written by Jens Mönig
jens@moenig.org
- Copyright (C) 2014 by Jens Mönig
+ Copyright (C) 2015 by Jens Mönig
This file is part of Snap!.
@@ -57,7 +57,9 @@
Nathan Dinsmore contributed to the design and implemented a first
working version of a complete XMLSerializer. I have taken much of the
overall design and many of the functions and methods in this file from
- Nathan's fine original prototype.
+ Nathan's fine original prototype. Recently Nathan has once again
+ worked his magic on the parser and optimized it by an order of
+ magnitude.
*/
@@ -65,7 +67,7 @@
// Global stuff ////////////////////////////////////////////////////////
-modules.xml = '2014-January-09';
+modules.xml = '2015-June-25';
// Declarations