diff options
Diffstat (limited to 'js/clipboard/internal-ops/elements-clipboard-agent.js')
-rw-r--r-- | js/clipboard/internal-ops/elements-clipboard-agent.js | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/js/clipboard/internal-ops/elements-clipboard-agent.js b/js/clipboard/internal-ops/elements-clipboard-agent.js index fa433a59..a6bce2ba 100644 --- a/js/clipboard/internal-ops/elements-clipboard-agent.js +++ b/js/clipboard/internal-ops/elements-clipboard-agent.js | |||
@@ -1,24 +1,25 @@ | |||
1 | /* <copyright> | 1 | /* <copyright> |
2 | Copyright (c) 2012, Motorola Mobility, Inc | 2 | Copyright (c) 2012, Motorola Mobility LLC. |
3 | All Rights Reserved. | 3 | All Rights Reserved. |
4 | BSD License. | ||
5 | 4 | ||
6 | Redistribution and use in source and binary forms, with or without | 5 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met: | 6 | modification, are permitted provided that the following conditions are met: |
8 | 7 | ||
9 | - Redistributions of source code must retain the above copyright notice, | 8 | * Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. | 9 | this list of conditions and the following disclaimer. |
11 | - Redistributions in binary form must reproduce the above copyright | 10 | |
12 | notice, this list of conditions and the following disclaimer in the | 11 | * Redistributions in binary form must reproduce the above copyright notice, |
13 | documentation and/or other materials provided with the distribution. | 12 | this list of conditions and the following disclaimer in the documentation |
14 | - Neither the name of Motorola Mobility nor the names of its contributors | 13 | and/or other materials provided with the distribution. |
15 | may be used to endorse or promote products derived from this software | 14 | |
16 | without specific prior written permission. | 15 | * Neither the name of Motorola Mobility LLC nor the names of its |
16 | contributors may be used to endorse or promote products derived from this | ||
17 | software without specific prior written permission. | ||
17 | 18 | ||
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
@@ -31,8 +32,8 @@ POSSIBILITY OF SUCH DAMAGE. | |||
31 | //////////////////////////////////////////////////////////////////////// | 32 | //////////////////////////////////////////////////////////////////////// |
32 | // | 33 | // |
33 | 34 | ||
34 | var Montage = require("montage/core/core").Montage, | 35 | var Montage = require("montage/core/core").Montage, |
35 | Component = require("montage/ui/component").Component, | 36 | Component = require("montage/ui/component").Component, |
36 | ClipboardUtil = require("js/clipboard/util").ClipboardUtil, | 37 | ClipboardUtil = require("js/clipboard/util").ClipboardUtil, |
37 | World = require("js/lib/drawing/world").World; | 38 | World = require("js/lib/drawing/world").World; |
38 | 39 | ||
@@ -264,7 +265,10 @@ var ElementsClipboardAgent = exports.ElementsClipboardAgent = Montage.create(Com | |||
264 | styles = null; | 265 | styles = null; |
265 | } | 266 | } |
266 | 267 | ||
268 | var addDelegate = this.application.ninja.elementMediator.addDelegate; | ||
269 | this.application.ninja.elementMediator.addDelegate = null; | ||
267 | this.application.ninja.elementMediator.addElements(canvas, styles, false); | 270 | this.application.ninja.elementMediator.addElements(canvas, styles, false); |
271 | this.application.ninja.elementMediator.addDelegate = addDelegate; | ||
268 | 272 | ||
269 | worldData = sourceCanvas.elementModel.shapeModel ? sourceCanvas.elementModel.shapeModel.GLWorld.exportJSON(): null; | 273 | worldData = sourceCanvas.elementModel.shapeModel ? sourceCanvas.elementModel.shapeModel.GLWorld.exportJSON(): null; |
270 | if(worldData) | 274 | if(worldData) |
@@ -346,7 +350,7 @@ var ElementsClipboardAgent = exports.ElementsClipboardAgent = Montage.create(Com | |||
346 | 350 | ||
347 | pastePositioned:{ | 351 | pastePositioned:{ |
348 | value: function(element, styles, fromCopy){// for now can wok for both in-place and centered paste | 352 | value: function(element, styles, fromCopy){// for now can wok for both in-place and centered paste |
349 | var modObject = [], x,y, newX, newY, counter; | 353 | var modObject = [], x,y, newX, newY, counter, self = this; |
350 | 354 | ||
351 | if((typeof fromCopy === "undefined") || (fromCopy && fromCopy === true)){ | 355 | if((typeof fromCopy === "undefined") || (fromCopy && fromCopy === true)){ |
352 | counter = this.pasteCounter; | 356 | counter = this.pasteCounter; |
@@ -359,11 +363,22 @@ var ElementsClipboardAgent = exports.ElementsClipboardAgent = Montage.create(Com | |||
359 | newX = styles ? ("" + (styles.left + (25 * counter)) + "px") : "100px"; | 363 | newX = styles ? ("" + (styles.left + (25 * counter)) + "px") : "100px"; |
360 | newY = styles ? ("" + (styles.top + (25 * counter)) + "px") : "100px"; | 364 | newY = styles ? ("" + (styles.top + (25 * counter)) + "px") : "100px"; |
361 | 365 | ||
366 | var addDelegate = this.application.ninja.elementMediator.addDelegate; | ||
367 | this.application.ninja.elementMediator.addDelegate = null; | ||
362 | if(!styles || (styles && !styles.position)){ | 368 | if(!styles || (styles && !styles.position)){ |
363 | this.application.ninja.elementMediator.addElements(element, null, false); | 369 | this.application.ninja.elementMediator.addElements(element, null, false); |
364 | }else if(styles && (styles.position === "absolute")){ | 370 | }else if(styles && (styles.position === "absolute")){ |
371 | if((element.tagName === "IMG") || (element.getAttribute("type") === "image/svg+xml")){ | ||
372 | element.onload = function(){ | ||
373 | element.onload = null; | ||
374 | //refresh selection | ||
375 | self.application.ninja.stage.needsDraw = true; | ||
376 | } | ||
377 | } | ||
378 | |||
365 | this.application.ninja.elementMediator.addElements(element, {"top" : newY, "left" : newX}, false);//displace | 379 | this.application.ninja.elementMediator.addElements(element, {"top" : newY, "left" : newX}, false);//displace |
366 | } | 380 | } |
381 | this.application.ninja.elementMediator.addDelegate = addDelegate; | ||
367 | } | 382 | } |
368 | }, | 383 | }, |
369 | 384 | ||