Update of /cvsroot/qooxdoo/qooxdoo/source/script/core
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17875/source/script/core
Modified Files:
Tag: renderer
QxDom.js
Log Message:
Changed css fix handling again to apply CSS rules earlier
Index: QxDom.js
===================================================================
RCS file: /cvsroot/qooxdoo/qooxdoo/source/script/core/QxDom.js,v
retrieving revision 1.10.2.23
retrieving revision 1.10.2.24
diff -u -d -r1.10.2.23 -r1.10.2.24
--- QxDom.js 16 Jan 2006 16:11:55 -0000 1.10.2.23
+++ QxDom.js 30 Jan 2006 11:42:40 -0000 1.10.2.24
@@ -947,11 +947,11 @@
QxDom.scrollIntoViewX = function(vElement, vAlignLeft)
{
var vParentWidth, vParentScrollLeft, vWidth, vHasScroll;
-
+
var vParent = vElement.parentNode;
var vOffset = vElement.offsetLeft;
var vWidth = vElement.offsetWidth;
-
+
while(vParent)
{
switch(QxDom.getComputedStyleProperty(vParent, QxConst.PROPERTY_OVERFLOW_BOTH))
@@ -959,30 +959,30 @@
case QxConst.OVERFLOW_VALUE_BOTH:
case QxConst.OVERFLOW_VALUE_AUTO:
case QxConst.OVERFLOW_VALUE_MOZ_HORIZONTAL:
- vHasScroll = true;
+ vHasScroll = true;
break;
-
+
default:
switch(QxDom.getComputedStyleProperty(vParent, QxConst.PROPERTY_OVERFLOW_HORIZONTAL))
{
case QxConst.OVERFLOW_VALUE_BOTH:
case QxConst.OVERFLOW_VALUE_AUTO:
- vHasScroll = true;
+ vHasScroll = true;
break;
-
+
default:
vHasScroll = false;
};
};
-
+
// QxDebug("QxDom", "Scroll: " + vParent + " :: " + vHasScroll + " :: " + vOffset);
-
+
if (vHasScroll)
{
- vParentWidth = vParent.clientWidth;
- vParentScrollLeft = vParent.scrollLeft;
-
- if (vAlignLeft)
+ vParentWidth = vParent.clientWidth;
+ vParentScrollLeft = vParent.scrollLeft;
+
+ if (vAlignLeft)
{
vParent.scrollLeft = vOffset;
}
@@ -990,15 +990,15 @@
{
vParent.scrollLeft = vOffset + vWidth - vParentWidth;
}
- else if (vWidth > vParentWidth || vOffset < vParentScrollLeft)
+ else if (vWidth > vParentWidth || vOffset < vParentScrollLeft)
{
vParent.scrollLeft = vOffset;
}
- else if ((vOffset + vWidth) > (vParentScrollLeft + vParentWidth))
+ else if ((vOffset + vWidth) > (vParentScrollLeft + vParentWidth))
{
vParent.scrollLeft = vOffset + vWidth - vParentWidth;
- };
-
+ };
+
vOffset = vParent.offsetLeft;
vWidth = vParent.offsetWidth;
}
@@ -1013,18 +1013,18 @@
vParent = vParent.parentNode;
};
-
+
return true;
};
QxDom.scrollIntoViewY = function(vElement, vAlignTop)
{
var vParentHeight, vParentScrollTop, vHeight, vHasScroll;
-
+
var vParent = vElement.parentNode;
var vOffset = vElement.offsetTop;
var vHeight = vElement.offsetHeight;
-
+
while(vParent)
{
switch(QxDom.getComputedStyleProperty(vParent, QxConst.PROPERTY_OVERFLOW_BOTH))
@@ -1032,30 +1032,30 @@
case QxConst.OVERFLOW_VALUE_BOTH:
case QxConst.OVERFLOW_VALUE_AUTO:
case QxConst.OVERFLOW_VALUE_MOZ_VERTICAL:
- vHasScroll = true;
+ vHasScroll = true;
break;
-
+
default:
switch(QxDom.getComputedStyleProperty(vParent, QxConst.PROPERTY_OVERFLOW_VERTICAL))
{
case QxConst.OVERFLOW_VALUE_BOTH:
case QxConst.OVERFLOW_VALUE_AUTO:
- vHasScroll = true;
+ vHasScroll = true;
break;
-
+
default:
vHasScroll = false;
};
};
-
+
// QxDebug("QxDom", "Scroll: " + vParent + " :: " + vHasScroll + " :: " + vOffset);
-
+
if (vHasScroll)
{
- vParentHeight = vParent.clientHeight;
- vParentScrollTop = vParent.scrollTop;
-
- if (vAlignTop)
+ vParentHeight = vParent.clientHeight;
+ vParentScrollTop = vParent.scrollTop;
+
+ if (vAlignTop)
{
vParent.scrollTop = vOffset;
}
@@ -1063,15 +1063,15 @@
{
vParent.scrollTop = vOffset + vHeight - vParentHeight;
}
- else if (vHeight > vParentHeight || vOffset < vParentScrollTop)
+ else if (vHeight > vParentHeight || vOffset < vParentScrollTop)
{
vParent.scrollTop = vOffset;
}
- else if ((vOffset + vHeight) > (vParentScrollTop + vParentHeight))
+ else if ((vOffset + vHeight) > (vParentScrollTop + vParentHeight))
{
vParent.scrollTop = vOffset + vHeight - vParentHeight;
- };
-
+ };
+
vOffset = vParent.offsetTop;
vHeight = vParent.offsetHeight;
}
@@ -1086,6 +1086,81 @@
vParent = vParent.parentNode;
};
-
+
return true;
};
+
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ CSS API
+---------------------------------------------------------------------------
+*/
+
+if (QxClient.isMshtml())
+{
+ QxDom.createStyleElement = function(vCssText)
+ {
+ var vSheet = document.createStyleSheet();
+
+ if (vCssText) {
+ vSheet.cssText = vCssText;
+ };
+
+ return vSheet;
+ };
+
+ QxDom.addCssRule = function(vSheet, vSelector, vStyle) {
+ vSheet.addRule(vSelector, vStyle);
+ };
+
+ QxDom.removeCssRule = function(vSheet, vSelector)
+ {
+ vRules = vSheet.rules;
+ vLength = vRules.length;
+
+ for (i=vLength-1; i>=0; i--)
+ {
+ if (vRules[i].selectorText == vSelector) {
+ vSheet.removeRule(i);
+ };
+ };
+ };
+}
+else
+{
+ QxDom.createStyleElement = function(vCssText)
+ {
+ vElement = document.createElement("STYLE");
+ vElement.type = "text/css";
+
+ if (vCssText) {
+ vElement.appendChild(document.createTextNode(vCssText));
+ };
+
+ document.getElementsByTagName("HEAD")[0].appendChild(vElement);
+
+ return vElement.sheet;
+ };
+
+ QxDom.addCssRule = function(vSheet, vSelector, vStyle) {
+ vSheet.insertRule(vSelector + "{" + vStyle + "}", vSheet.cssRules.length);
+ };
+
+ QxDom.removeCssRule = function(vSheet, vSelector)
+ {
+ vRules = vSheet.cssRules;
+ vLength = rules.length;
+
+ for (i=vLength-1; i>=0; i--)
+ {
+ if (vRules[i].selectorText == vSelector) {
+ vSheet.deleteRule(i);
+ };
+ };
+ };
+};
\ No newline at end of file
|