History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: LPP-3880
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: -- --
Assignee: Unassigned
Reporter: Philip Romanik
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
OpenLaszlo

IE/dhtml: vacation survey crashes when run

Created: 14/Apr/07 01:06 PM   Updated: 21/Jan/08 01:59 PM
Component/s: Laszlo Foundation Classes (LFC)
Affects Version/s: 4.0.0
Fix Version/s: RingDing (4.1)

Time Tracking:
Not Specified

Environment: IE6/7, dhtml

Severity: Major
Fixed in Change#: 5,440
Fixed in branch: branches/legals
Runtime: N/A
Fix in hand: False


 Description  « Hide
I found that the vacation survey demo, http://localhost:8080/legals/demos/vacation-survey/vacation-survey.lzx?lzr=dhtml, generates a DHTML error when run on IE6/IE7. This error occurs on legals and the 4.0 branch.

The error, invalid argument, is coming from LzTextSprite.setWidth() on this line:

        this.__LZtextdiv.style.width = wp;



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Max Carlson - 11/Jun/07 07:14 PM
Author: max
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 run

Technical 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

Max Carlson - 15/Jun/07 08:23 PM
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: LPP-3880 - IE/dhtml: vacation survey crashes when run

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 LPP-2680.
- // 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 LPP-2680.
+ // 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 &apos; in innerHTML
- LzSprite.prototype.quirks['inner_html_no_entity_apos'] = true;
+ // workaround for IE not supporting &apos; 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 LPP-4119
- 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 LPP-4119
+ 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 LPP-2584 - Lzpix: problem with multi-selecting images in Safari 2.0.4, dhtml)
- LzSprite.prototype.quirks['alt_key_sends_control'] = true;
+ // Remap alt/option key also sends control since control-click shows context menu (see LPP-2584 - Lzpix: problem with multi-selecting images in Safari 2.0.4, dhtml)
+ 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

Mamye Kratt - 11/Jul/07 06:04 PM
(4.0 branch (4.0.3) build r5641)
Close in 4.0.3. Writing new bug for the alert 'Trenton' window.

Mamye Kratt - 11/Jul/07 06:05 PM
Needs to be tested in legals.

Mamye Kratt - 17/Jul/07 12:13 PM
Need to test in legals.

Mamye Kratt - 21/Jan/08 01:59 PM
(trunk 4 local build r7775)
Not crashing anymore.