Преглед изворни кода

Merge pull request #6968 from lockphase/master

gui svg icon load bugfix for Chrome
David Catuhe пре 5 година
родитељ
комит
65b563443c
3 измењених фајлова са 101 додато и 12 уклоњено
  1. 96 0
      Playground/textures/gui/bjs_demo1.svg
  2. 1 1
      dist/preview release/what's new.md
  3. 4 11
      gui/src/2D/controls/image.ts

Разлика између датотеке није приказан због своје велике величине
+ 96 - 0
Playground/textures/gui/bjs_demo1.svg


+ 1 - 1
dist/preview release/what's new.md

@@ -137,7 +137,7 @@
 - Added `Button.delegatePickingToChildren` to let buttons delegate hit testing to embedded controls ([Deltakosh](https://github.com/deltakosh/))
 - Added `Button.delegatePickingToChildren` to let buttons delegate hit testing to embedded controls ([Deltakosh](https://github.com/deltakosh/))
 - Added `Container.maxLayoutCycle` and `Container.logLayoutCycleErrors` to get more control over layout cycles ([Deltakosh](https://github.com/deltakosh/))
 - Added `Container.maxLayoutCycle` and `Container.logLayoutCycleErrors` to get more control over layout cycles ([Deltakosh](https://github.com/deltakosh/))
 - Added `StackPanel.ignoreLayoutWarnings` to disable console warnings when controls with percentage size are added to a StackPanel ([Deltakosh](https://github.com/deltakosh/))
 - Added `StackPanel.ignoreLayoutWarnings` to disable console warnings when controls with percentage size are added to a StackPanel ([Deltakosh](https://github.com/deltakosh/))
-- Added `_getSVGAttribs` functionality for loading multiple svg icons from an external svg file via icon id.([lockphase](https://github.com/lockphase/))
+- Added `_getSVGAttribs` functionality for loading multiple svg icons from an external svg file via icon id. Fixed bug for Chrome.([lockphase](https://github.com/lockphase/))
 
 
 ### Particles
 ### Particles
 
 

+ 4 - 11
gui/src/2D/controls/image.ts

@@ -384,16 +384,10 @@ export class Image extends Control {
             // check if object alr exist in document
             // check if object alr exist in document
             var svgExist = <HTMLObjectElement> document.body.querySelector('object[data="' + svgsrc + '"]');
             var svgExist = <HTMLObjectElement> document.body.querySelector('object[data="' + svgsrc + '"]');
             if (svgExist) {
             if (svgExist) {
-                if (svgExist.contentDocument) {
-                    // svg object alr exists
+                // wait for object to load
+                svgExist.addEventListener("load", () => {
                     this._getSVGAttribs(svgExist, elemid);
                     this._getSVGAttribs(svgExist, elemid);
-                } else {
-                    // wait for object to load
-                    svgExist.addEventListener("load", () => {
-                        this._getSVGAttribs(svgExist, elemid);
-                    });
-                }
-
+                });
             } else {
             } else {
                 // create document object
                 // create document object
                 var svgImage = document.createElement("object");
                 var svgImage = document.createElement("object");
@@ -409,7 +403,6 @@ export class Image extends Control {
                         this._getSVGAttribs(svgobj, elemid);
                         this._getSVGAttribs(svgobj, elemid);
                     }
                     }
                 };
                 };
-
             }
             }
         }
         }
     }
     }
@@ -427,7 +420,7 @@ export class Image extends Control {
             var docheight = Number(svgDoc.documentElement.getAttribute("height"));
             var docheight = Number(svgDoc.documentElement.getAttribute("height"));
             // get element bbox and matrix transform
             // get element bbox and matrix transform
             var elem = <SVGGraphicsElement> <unknown> svgDoc.getElementById(elemid);
             var elem = <SVGGraphicsElement> <unknown> svgDoc.getElementById(elemid);
-            if (elem instanceof SVGElement && vb && docwidth && docheight) {
+            if (vb && docwidth && docheight) {
                 var vb_width = Number(vb.split(" ")[2]);
                 var vb_width = Number(vb.split(" ")[2]);
                 var vb_height = Number(vb.split(" ")[3]);
                 var vb_height = Number(vb.split(" ")[3]);
                 var elem_bbox = elem.getBBox();
                 var elem_bbox = elem.getBBox();