|
|
|
Updated change:
Author: max Date: 2007-06-15 20:21:28 -0700 (Fri, 15 Jun 2007) New Revision: 5440 Modified: openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js Log: Change 20070615-maxcarlson-8 by maxcarlson@plastik on 2007-06-15 15:57:12 PDT in /Users/maxcarlson/openlaszlo/legals-clean for http://svn.openlaszlo.org/openlaszlo/branches/legals Summary: Fix vacation-survey example in IE DHTML while still allowing negative CSS values New Features: Bugs Fixed: Technical Reviewer: promanik QA Reviewer: ptw Doc Reviewer: (pending) Documentation: Release Notes: Details: LzSprite.js - Move quirks setting code from global scope to the __updateQuirks() method. Remove bad test from CSSDimension(). LzTextSprite.js - Prevent negative values for text clipping in setWidth/Height(). Add more robust argument checking from LzSprite.setWidth/Height(). LzInputTextSprite.js - Add more robust argument checking from LzSprite.setWidth/Height(). Tests: lztest-textheight.lzx and lztest-view.lzx in DHTML and SWF are consistent with previous behavior. vacation survey runs in IE DHTML. Modified: openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js =================================================================== --- openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js 2007-06-16 00:38:31 UTC (rev 5439) +++ openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js 2007-06-16 03:21:28 UTC (rev 5440) @@ -293,6 +293,7 @@ } LzInputTextSprite.prototype.setWidth = function (w) { + if (w == null || w < 0 || isNaN(w) || this.width == w) return; // call LzSprite.setWidth(); this.__setWidth(w - this.____wpadding); if (this.quirks.fix_clickable) { @@ -303,6 +304,7 @@ } LzInputTextSprite.prototype.setHeight = function (h) { + if (h == null || h < 0 || isNaN(h) || this.height == h) return; // call LzSprite.setHeight(); this.__setHeight(h); if (this.quirks.fix_clickable) { Modified: openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js =================================================================== --- openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js 2007-06-16 00:38:31 UTC (rev 5439) +++ openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js 2007-06-16 03:21:28 UTC (rev 5440) @@ -219,92 +219,94 @@ ,htmlinputtext: false } -if (window['Lz'] && Lz.__BrowserDetect) { - Lz.__BrowserDetect.init(); - if (LzSprite.prototype.quirks['inner_html_strips_newlines'] == true) { - LzSprite.prototype.inner_html_strips_newlines_re = RegExp('$', 'mg'); - } +LzSprite.prototype.__updateQuirks = function(){ + if (window['Lz'] && Lz.__BrowserDetect) { + Lz.__BrowserDetect.init(); + if (this.quirks['inner_html_strips_newlines'] == true) { + LzSprite.prototype.inner_html_strips_newlines_re = RegExp('$', 'mg'); + } - // Divs intercept clicks if physically placed on top of an element - // that's not a parent. See - // off for now - //LzSprite.prototype.quirks['fix_clickable'] = true; - if (Lz.__BrowserDetect.isIE) { - // Provide IE PNG/opacity support - LzSprite.prototype.quirks['ie_alpha_image_loader'] = true; + // Divs intercept clicks if physically placed on top of an element + // that's not a parent. See + // off for now + //this.quirks['fix_clickable'] = true; + if (Lz.__BrowserDetect.isIE) { + // Provide IE PNG/opacity support + this.quirks['ie_alpha_image_loader'] = true; - // IE DOM leak prevention - LzSprite.prototype.quirks['ie_leak_prevention'] = true; + // IE DOM leak prevention + this.quirks['ie_leak_prevention'] = true; - // Use images to force click tree to work in IE - LzSprite.prototype.quirks['fix_ie_clickable'] = true; + // Use images to force click tree to work in IE + this.quirks['fix_ie_clickable'] = true; - // workaround for IE refusing to respect divs with small heights when - // no image is attached - LzSprite.prototype.quirks['fix_ie_background_height'] = true; + // workaround for IE refusing to respect divs with small heights when + // no image is attached + this.quirks['fix_ie_background_height'] = true; - // workaround for IE not supporting ' in innerHTML - LzSprite.prototype.quirks['inner_html_no_entity_apos'] = true; + // workaround for IE not supporting ' in innerHTML + this.quirks['inner_html_no_entity_apos'] = true; - // workaround for IE not supporting clip in divs containing inputtext - LzSprite.prototype.quirks['inputtext_parents_cannot_contain_clip'] = true; + // workaround for IE not supporting clip in divs containing inputtext + this.quirks['inputtext_parents_cannot_contain_clip'] = true; - // flag for components (basefocusview for now) to minimize opacity changes - LzSprite.prototype.quirks['minimize_opacity_changes'] = true; + // flag for components (basefocusview for now) to minimize opacity changes + this.quirks['minimize_opacity_changes'] = true; - // multiline inputtext height must be set directly - height: 100% does not work. See - LzSprite.prototype.quirks['set_height_for_multiline_inputtext'] = true; - } else if (Lz.__BrowserDetect.isSafari) { - // Fix bug in where if any parent of an image is hidden the size is 0 - // TODO: Tucker claims this is fixed in the latest version of webkit - LzSprite.prototype.quirks['invisible_parent_image_sizing_fix'] = true; + // multiline inputtext height must be set directly - height: 100% does not work. See + this.quirks['set_height_for_multiline_inputtext'] = true; + } else if (Lz.__BrowserDetect.isSafari) { + // Fix bug in where if any parent of an image is hidden the size is 0 + // TODO: Tucker claims this is fixed in the latest version of webkit + this.quirks['invisible_parent_image_sizing_fix'] = true; - // Remap alt/option key also sends control since control-click shows context menu (see - LzSprite.prototype.quirks['alt_key_sends_control'] = true; + // Remap alt/option key also sends control since control-click shows context menu (see + this.quirks['alt_key_sends_control'] = true; - // Safari scrollHeight needs to subtract scrollbar height - LzSprite.prototype.quirks['safari_textarea_subtract_scrollbar_height'] = true; + // Safari scrollHeight needs to subtract scrollbar height + this.quirks['safari_textarea_subtract_scrollbar_height'] = true; - // Safari doesn't like clipped or placed input text fields. - LzSprite.prototype.quirks['safari_avoid_clip_position_input_text'] = true; - // Safari won't show canvas tags whose parent is display: none - LzSprite.prototype.quirks['safari_visibility_instead_of_display'] = true; - LzSprite.prototype.quirks['absolute_position_accounts_for_offset'] = true; - LzSprite.prototype.quirks['canvas_div_cannot_be_clipped'] = true; - } else if (Lz.__BrowserDetect.isOpera) { - // Fix bug in where if any parent of an image is hidden the size is 0 - LzSprite.prototype.quirks['invisible_parent_image_sizing_fix'] = true; - // reverse mouse wheel - LzSprite.prototype.quirks['reverse_mouse_wheel'] = true; - LzSprite.prototype.quirks['no_cursor_colresize'] = true; - LzSprite.prototype.quirks['absolute_position_accounts_for_offset'] = true; - LzSprite.prototype.quirks['canvas_div_cannot_be_clipped'] = true; - } else if (Lz.__BrowserDetect.isFirefox && Lz.__BrowserDetect.version < 2) { - // see http://groups.google.ca/group/netscape.public.mozilla.dom/browse_thread/thread/821271ca11a1bdbf/46c87b49c026246f?lnk=st&q=+focus+nsIAutoCompletePopup+selectedIndex&rnum=1 - LzSprite.prototype.quirks['firefox_autocomplete_bug'] = true; + // Safari doesn't like clipped or placed input text fields. + this.quirks['safari_avoid_clip_position_input_text'] = true; + // Safari won't show canvas tags whose parent is display: none + this.quirks['safari_visibility_instead_of_display'] = true; + this.quirks['absolute_position_accounts_for_offset'] = true; + this.quirks['canvas_div_cannot_be_clipped'] = true; + } else if (Lz.__BrowserDetect.isOpera) { + // Fix bug in where if any parent of an image is hidden the size is 0 + this.quirks['invisible_parent_image_sizing_fix'] = true; + // reverse mouse wheel + this.quirks['reverse_mouse_wheel'] = true; + this.quirks['no_cursor_colresize'] = true; + this.quirks['absolute_position_accounts_for_offset'] = true; + this.quirks['canvas_div_cannot_be_clipped'] = true; + } else if (Lz.__BrowserDetect.isFirefox && Lz.__BrowserDetect.version < 2) { + // see http://groups.google.ca/group/netscape.public.mozilla.dom/browse_thread/thread/821271ca11a1bdbf/46c87b49c026246f?lnk=st&q=+focus+nsIAutoCompletePopup+selectedIndex&rnum=1 + this.quirks['firefox_autocomplete_bug'] = true; + } } -} -if (LzSprite.prototype.quirks['safari_avoid_clip_position_input_text']) { - LzSprite.prototype.__defaultStyles.lzswfinputtext.marginTop = '-2px'; - LzSprite.prototype.__defaultStyles.lzswfinputtext.marginLeft = '-2px'; - LzSprite.prototype.__defaultStyles.lzswfinputtextmultiline.marginTop = '-2px'; - LzSprite.prototype.__defaultStyles.lzswfinputtextmultiline.marginLeft = '-2px'; -} + if (this.quirks['safari_avoid_clip_position_input_text']) { + LzSprite.prototype.__defaultStyles.lzswfinputtext.marginTop = '-2px'; + LzSprite.prototype.__defaultStyles.lzswfinputtext.marginLeft = '-2px'; + LzSprite.prototype.__defaultStyles.lzswfinputtextmultiline.marginTop = '-2px'; + LzSprite.prototype.__defaultStyles.lzswfinputtextmultiline.marginLeft = '-2px'; + } -if (LzSprite.prototype.quirks['css_hide_canvas_during_init']) { - if (LzSprite.prototype.quirks['safari_visibility_instead_of_display']) { - LzSprite.prototype.__defaultStyles.lzcanvasdiv.visibility = 'hidden'; - } else { - LzSprite.prototype.__defaultStyles.lzcanvasdiv.display = 'none'; + if (this.quirks['css_hide_canvas_during_init']) { + if (this.quirks['safari_visibility_instead_of_display']) { + LzSprite.prototype.__defaultStyles.lzcanvasdiv.visibility = 'hidden'; + } else { + LzSprite.prototype.__defaultStyles.lzcanvasdiv.display = 'none'; + } + LzSprite.prototype.__defaultStyles.lzcanvasclickdiv.display = 'none'; } - LzSprite.prototype.__defaultStyles.lzcanvasclickdiv.display = 'none'; -} -if (LzSprite.prototype.quirks['hand_pointer_for_clickable']) { - LzSprite.prototype.__defaultStyles.lzclickdiv.cursor = 'pointer'; + if (this.quirks['hand_pointer_for_clickable']) { + LzSprite.prototype.__defaultStyles.lzclickdiv.cursor = 'pointer'; + } } - +LzSprite.prototype.__updateQuirks(); LzSprite.prototype.__defaultStyles.writeCSS(); /** @@ -446,7 +448,6 @@ } LzSprite.prototype.CSSDimension = function (value, units) { - if (value < 0) value = 0; return Math.floor(value) + (units ? units : 'px'); } Modified: openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js =================================================================== --- openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js 2007-06-16 00:38:31 UTC (rev 5439) +++ openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js 2007-06-16 03:21:28 UTC (rev 5440) @@ -397,22 +397,20 @@ LzTextSprite.prototype.__setWidth = LzSprite.prototype.setWidth; LzTextSprite.prototype.setWidth = function (w){ - if (w > 0) { - var wp = this.CSSDimension(w - this.__wpadding); - this.__LZtextdiv.style.width = wp; - this.__LZtextdiv.style.clip = 'rect(0px ' + wp + ' ' + this.CSSDimension(this.height - this.__hpadding) + ' 0px)'; - } + if (w == null || w < 0 || isNaN(w) || this.width == w) return; + var wp = this.CSSDimension(w >= this.__wpadding ? w - this.__wpadding : 0); + this.__LZtextdiv.style.width = wp; + this.__LZtextdiv.style.clip = 'rect(0px ' + wp + ' ' + this.CSSDimension(this.height >= this.__hpadding ? this.height - this.__hpadding : 0) + ' 0px)'; this.__setWidth(w); this._styledirty = true; } LzTextSprite.prototype.__setHeight = LzSprite.prototype.setHeight; LzTextSprite.prototype.setHeight = function (h){ - if (h > 0) { - var hp = this.CSSDimension(h - this.__hpadding); - this.__LZtextdiv.style.height = hp; - this.__LZtextdiv.style.clip = 'rect(0px ' + this.CSSDimension(this.width - this.__wpadding) + ' ' + hp + ' 0px)'; - } + if (h == null || h < 0 || isNaN(h) || this.height == h) return; + var hp = this.CSSDimension(h >= this.__hpadding ? h - this.__hpadding : 0); + this.__LZtextdiv.style.height = hp; + this.__LZtextdiv.style.clip = 'rect(0px ' + this.CSSDimension(this.width >= this.__wpadding ? this.width - this.__wpadding : 0) + ' ' + hp + ' 0px)'; this.__setHeight(h); if (this.multiline) this._styledirty = true; } _______________________________________________ Laszlo-checkins mailing list Laszlo-checkins@openlaszlo.org http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins (4.0 branch (4.0.3) build r5641)
Close in 4.0.3. Writing new bug for the alert 'Trenton' window. (trunk 4 local build r7775)
Not crashing anymore. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Date: 2007-06-11 19:13:16 -0700 (Mon, 11 Jun 2007)
New Revision: 5387
Modified:
openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
Log:
Change 20070611-maxcarlson-M by maxcarlson@plastik on 2007-06-11 17:47:04 PDT
in /Users/maxcarlson/openlaszlo/legals-clean
for http://svn.openlaszlo.org/openlaszlo/branches/legals
Summary: Prevent invalid CSS values from being set in DHTML
New Features:
Bugs Fixed:
LPP-3880- IE/dhtml: vacation survey crashes when runTechnical Reviewer: promanik
QA Reviewer: jcrowley
Doc Reviewer: (pending)
Documentation:
Release Notes:
Details: LzSprite.js - CSSDimension() tests for and corrects negative values.
Tests: http://localhost:8080/legals/demos/vacation-survey/vacation-survey.lzx?lzr=dhtml passes in ie 7
Modified: openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
===================================================================
--- openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js 2007-06-12 01:48:50 UTC (rev 5386)
+++ openlaszlo/branches/legals/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js 2007-06-12 02:13:16 UTC (rev 5387)
@@ -446,6 +446,7 @@
}
LzSprite.prototype.CSSDimension = function (value, units) {
+ if (value < 0) value = 0;
return Math.floor(value) + (units ? units : 'px');
}
_______________________________________________
Laszlo-checkins mailing list
Laszlo-checkins@openlaszlo.org
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins