[Sie-announce] SIEコード [2273] チケット #23598「text要素の中のa要素が表示されない」バグを修正

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 1月 3日 (月) 23:08:51 JST


Revision: 2273
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2273
Author:   dhrname
Date:     2011-01-03 23:08:50 +0900 (Mon, 03 Jan 2011)

Log Message:
-----------
チケット #23598「text要素の中のa要素が表示されない」バグを修正

Ticket Links:
:-----------
    http://sourceforge.jp/projects/sie/tracker/detail/23598

Modified Paths:
--------------
    branches/06x/067/org/w3c/dom/svg.js

Modified: branches/06x/067/org/w3c/dom/svg.js
===================================================================
--- branches/06x/067/org/w3c/dom/svg.js	2011-01-03 09:49:59 UTC (rev 2272)
+++ branches/06x/067/org/w3c/dom/svg.js	2011-01-03 14:08:50 UTC (rev 2273)
@@ -3811,7 +3811,7 @@
       var n = parseFloat(style.getPropertyValue("font-size")) * Math.sqrt(Math.abs(tar.getScreenCTM()._determinant()));
       ttp.style.fontSize = n + "px";
       ttp.style.fontFamily = style.getPropertyValue("font-family");
-      var tod = tar.ownerDocument.documentElement;
+      var tod = tar.ownerDocument.documentElement, ttpc = ttp; //ttpcはttpのキャッシュ
       var tlen = tar.getComputedTextLength(), anchor = style.getPropertyValue("text-anchor");
       /*ここでの変数jは前回ノードまでの総文字数*/
       for (var i=0, j=0, tli=tar.getNumberOfChars();i<tli;++i) {
@@ -3843,8 +3843,12 @@
             sty = p = null;
           }
           if (ti.nodeName === "#text") {
-            if ((ti.data.length+j) <= i+1) {
+            if ((ti.data.length+j) <= i+1) { //テキストノード内の文字をすべて処理し終えれば
               j = j + ti.data.length;
+              if (ti.parentNode.localName === "a") {
+                ti =  ti.parentNode;
+                ttp = ttpc;
+              }
               ti = ti.nextSibling;
             }
           } else if (!!ti.getNumberOfChars) {
@@ -3853,9 +3857,9 @@
                 ti = ti.nextSibling;
               }
           } else if ((ti.localName === "a") && (ti.namespaceURI === "http://www.w3.org/2000/svg") && ti.firstChild) {
+            ttp = ti._tar;
             ti = ti.firstChild;
-          } else if (ti.parentNode.localName === "a") {
-            ti =  ti.parentNode.nextSibling;
+            --i;
           }
         }
       }
@@ -3895,7 +3899,7 @@
         ttp.appendChild(backr);
       }
       delete tar._cacheMatrix, tar._currentStyle;
-      isRect = evt = tar = style = null;
+      isRect = evt = tar = style = tpp = ttpc = null;
     }, false);
     evt = tar = null;
   },false);




Sie-announce メーリングリストの案内
Back to archive index