ライブラリ更新
git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@3972 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
parent
20964287fd
commit
df8aa6f26a
@ -18,7 +18,65 @@
|
|||||||
|
|
||||||
var Ci = Components.interfaces;
|
var Ci = Components.interfaces;
|
||||||
|
|
||||||
var getFrameOwnerFromFrame = function(aFrame) {
|
window['piro.sakura.ne.jp'].boxObject = {
|
||||||
|
revision : currentRevision,
|
||||||
|
|
||||||
|
getBoxObjectFor : function(aNode)
|
||||||
|
{
|
||||||
|
if ('getBoxObjectFor' in aNode.ownerDocument)
|
||||||
|
return aNode.ownerDocument.getBoxObjectFor(aNode);
|
||||||
|
|
||||||
|
return this.getBoxObjectFromClientRectFor(aNode);
|
||||||
|
},
|
||||||
|
|
||||||
|
getBoxObjectFromClientRectFor : function(aNode)
|
||||||
|
{
|
||||||
|
var box = {
|
||||||
|
x : 0,
|
||||||
|
y : 0,
|
||||||
|
width : 0,
|
||||||
|
height : 0,
|
||||||
|
screenX : 0,
|
||||||
|
screenY : 0
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
var rect = aNode.getBoundingClientRect();
|
||||||
|
var frame = aNode.ownerDocument.defaultView;
|
||||||
|
box.x = rect.left + frame.scrollX;
|
||||||
|
box.y = rect.top + frame.scrollY;
|
||||||
|
box.width = rect.right-rect.left;
|
||||||
|
box.height = rect.bottom-rect.top;
|
||||||
|
|
||||||
|
box.screenX = rect.left;
|
||||||
|
box.screenY = rect.top;
|
||||||
|
var owner = aNode;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
frame = owner.ownerDocument.defaultView;
|
||||||
|
owner = this._getFrameOwnerFromFrame(frame);
|
||||||
|
if (!owner) {
|
||||||
|
box.screenX += frame.screenX;
|
||||||
|
box.screenY += frame.screenY;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (owner.ownerDocument instanceof Ci.nsIDOMXULDocument) {
|
||||||
|
let ownerBox = owner.ownerDocument.getBoxObjectFor(owner);
|
||||||
|
box.screenX += ownerBox.screenX;
|
||||||
|
box.screenY += ownerBox.screenY;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let ownerRect = owner.getBoundingClientRect();
|
||||||
|
box.screenX += ownerRect.left;
|
||||||
|
box.screenY += ownerRect.top;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
}
|
||||||
|
return box;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getFrameOwnerFromFrame : function(aFrame)
|
||||||
|
{
|
||||||
var parentItem = aFrame
|
var parentItem = aFrame
|
||||||
.QueryInterface(Ci.nsIInterfaceRequestor)
|
.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||||
.getInterface(Ci.nsIWebNavigation)
|
.getInterface(Ci.nsIWebNavigation)
|
||||||
@ -55,58 +113,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
|
||||||
|
|
||||||
window['piro.sakura.ne.jp'].boxObject = {
|
|
||||||
revision : currentRevision,
|
|
||||||
|
|
||||||
getBoxObjectFor : function(aNode)
|
|
||||||
{
|
|
||||||
if ('getBoxObjectFor' in aNode.ownerDocument)
|
|
||||||
return aNode.ownerDocument.getBoxObjectFor(aNode);
|
|
||||||
|
|
||||||
var box = {
|
|
||||||
x : 0,
|
|
||||||
y : 0,
|
|
||||||
width : 0,
|
|
||||||
height : 0,
|
|
||||||
screenX : 0,
|
|
||||||
screenY : 0
|
|
||||||
};
|
|
||||||
try {
|
|
||||||
var rect = aNode.getBoundingClientRect();
|
|
||||||
var frame = aNode.ownerDocument.defaultView;
|
|
||||||
box.x = rect.left + frame.scrollX;
|
|
||||||
box.y = rect.top + frame.scrollY;
|
|
||||||
box.width = rect.right-rect.left;
|
|
||||||
box.height = rect.bottom-rect.top;
|
|
||||||
|
|
||||||
box.screenX = rect.left;
|
|
||||||
box.screenY = rect.top;
|
|
||||||
var owner = aNode;
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
frame = owner.ownerDocument.defaultView;
|
|
||||||
owner = getFrameOwnerFromFrame(frame);
|
|
||||||
if (!owner) {
|
|
||||||
box.screenX += frame.screenX;
|
|
||||||
box.screenY += frame.screenY;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (owner.ownerDocument instanceof Ci.nsIDOMXULDocument) {
|
|
||||||
let ownerBox = owner.ownerDocument.getBoxObjectFor(owner);
|
|
||||||
box.screenX += ownerBox.screenX;
|
|
||||||
box.screenY += ownerBox.screenY;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
let ownerRect = owner.getBoundingClientRect();
|
|
||||||
box.screenX += ownerRect.left;
|
|
||||||
box.screenY += ownerRect.top;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
}
|
|
||||||
return box;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user