From 1542562437d8636040c373465418264ef0489583 Mon Sep 17 00:00:00 2001 From: piro Date: Mon, 22 Oct 2007 09:59:43 +0000 Subject: [PATCH] =?UTF-8?q?=E9=81=B8=E6=8A=9E=E7=AF=84=E5=9B=B2=E3=81=AE?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=AF=E3=82=92=E5=AD=90=E3=82=BF=E3=83=96?= =?UTF-8?q?=E3=81=A8=E3=81=97=E3=81=A6=E9=96=8B=E3=81=8F=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@1284 599a83e7-65a4-db11-8015-0010dcdd6dc2 --- content/treestyletab/config.xul | 6 + content/treestyletab/treestyletab.js | 175 +++++++++++++++++++-- content/treestyletab/treestyletab.xul | 10 ++ defaults/preferences/treestyletab.js | 2 + locale/en-US/treestyletab/treestyletab.dtd | 5 + locale/ja/treestyletab/treestyletab.dtd | 5 + 6 files changed, 193 insertions(+), 10 deletions(-) diff --git a/content/treestyletab/config.xul b/content/treestyletab/config.xul index 24b11deb..acdf0ec9 100644 --- a/content/treestyletab/config.xul +++ b/content/treestyletab/config.xul @@ -25,6 +25,9 @@ + + -1) { + // 「ノードの先端が、選択範囲の終端より後にあるかどうか」をチェック。 + // 後にあるならば、そのノードは選択範囲外にあると考えられる。 + if (nodeRange.compareBoundaryPoints(Range.END_TO_START, range) > 0) { + // 「リンクテキストが実際には選択されていないリンク」については除外する + if ( + links.length && + range.startContainer.nodeType != Node.ELEMENT_NODE && + range.startOffset == range.startContainer.nodeValue.length && + links[0].node == this.getParentLink(range.startContainer) + ) + links.splice(0, 1); + + if ( + links.length && + range.endContainer.nodeType != Node.ELEMENT_NODE && + range.endOffset == 0 && + links[links.length-1].node == this.getParentLink(range.endContainer) + ) + links.splice(links.length-1, 1); + break; + } + else if (link = this.getParentLink(node)) { + try { + uri = link.href; + if (uri && uri.indexOf('mailto:') < 0) + links.push({ node : link, uri : uri }); + } + catch(e) { + } + } + } + + if (node.hasChildNodes() && !link) { + node = node.firstChild; + } + else { + while (!node.nextSibling) + { + node = node.parentNode; + if (!node) break traceTree; + } + node = node.nextSibling; + } + } + } + + nodeRange.detach(); + + return links; + }, + + getParentLink : function(aNode) + { + var node = aNode; + while (!node.href && node.parentNode) + node = node.parentNode; + + return node.href ? node : null ; + }, + /* Pref Listener */ domain : 'extensions.treestyletab', diff --git a/content/treestyletab/treestyletab.xul b/content/treestyletab/treestyletab.xul index 46b3c781..6da4c2ab 100644 --- a/content/treestyletab/treestyletab.xul +++ b/content/treestyletab/treestyletab.xul @@ -10,6 +10,16 @@