summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gui.js7
-rwxr-xr-xhistory.txt4
-rw-r--r--morphic.js22
3 files changed, 30 insertions, 3 deletions
diff --git a/gui.js b/gui.js
index 4f4f94b..11cecf6 100644
--- a/gui.js
+++ b/gui.js
@@ -68,7 +68,7 @@ sb, CommentMorph, CommandBlockMorph*/
// Global stuff ////////////////////////////////////////////////////////
-modules.gui = '2013-June-26';
+modules.gui = '2013-June-28';
// Declarations
@@ -1477,7 +1477,10 @@ IDE_Morph.prototype.reactToWorldResize = function (rect) {
};
IDE_Morph.prototype.droppedImage = function (aCanvas, name) {
- var costume = new Costume(aCanvas, name.split('.')[0]); // up to period
+ var costume = new Costume(
+ aCanvas,
+ name ? name.split('.')[0] : '' // up to period
+ );
this.currentSprite.addCostume(costume);
this.currentSprite.wearCostume(costume);
this.spriteBar.tabBar.tabTo('costumes');
diff --git a/history.txt b/history.txt
index d248eb4..633db8d 100755
--- a/history.txt
+++ b/history.txt
@@ -1769,3 +1769,7 @@ ______
130627
------
* Objects: fixed speech bubble scaling when sprite is not onstage (reported in the forums)
+
+130628
+------
+* Morphic, GUI: improved importing costumes by dragging in pictures from other web pages
diff --git a/morphic.js b/morphic.js
index b154dc8..1a20946 100644
--- a/morphic.js
+++ b/morphic.js
@@ -1035,7 +1035,7 @@
/*global window, HTMLCanvasElement, getMinimumFontHeight, FileReader, Audio,
FileList, getBlurredShadowSupport*/
-var morphicVersion = '2013-June-21';
+var morphicVersion = '2013-June-28';
var modules = {}; // keep track of additional loaded modules
var useBlurredShadows = getBlurredShadowSupport(); // check for Chrome-bug
@@ -9708,6 +9708,8 @@ HandMorph.prototype.processDrop = function (event) {
var files = event instanceof FileList ? event
: event.target.files || event.dataTransfer.files,
file,
+ url = event.dataTransfer ?
+ event.dataTransfer.getData('URL') : null,
txt = event.dataTransfer ?
event.dataTransfer.getData('Text/HTML') : null,
src,
@@ -9818,6 +9820,24 @@ HandMorph.prototype.processDrop = function (event) {
readBinary(file);
}
}
+ } else if (url) {
+ if (
+ contains(
+ ['gif', 'png', 'jpg', 'jpeg', 'bmp'],
+ url.slice(url.lastIndexOf('.') + 1).toLowerCase()
+ )
+ ) {
+ while (!target.droppedImage) {
+ target = target.parent;
+ }
+ img = new Image();
+ img.onload = function () {
+ canvas = newCanvas(new Point(img.width, img.height));
+ canvas.getContext('2d').drawImage(img, 0, 0);
+ target.droppedImage(canvas);
+ };
+ img.src = url;
+ }
} else if (txt) {
while (!target.droppedImage) {
target = target.parent;