Opened 10 years ago

Closed 7 years ago

#11101 closed defect (fixed)

Editable DataGrid gets frozen when using editable cell(dijit widget) with autoHeight="true"

Reported by: evan Owned by: Bryan Forbes
Priority: high Milestone: 1.5.3
Component: DojoX Grid Version: 1.5.0b2
Keywords: Cc: peller@…, toonetown@…, drschwar@…, hwcdl@…, BryanForbes@…, bill@…, xwzhu@…
Blocked By: Blocking:

Description

Steps to reproduce:

  1. Open dojox/grid/tests/test_data_grid_edit_dijit.html
  2. Add autoHeight = "true" attribute to the Grid markup e.g change it to "<table dojoType="dojox.grid.DataGrid?" autoHeight="true" .../>"
  3. Click any cell of column of "Type"

Error will occur - Grid get frozen by keep refreshing the ComboBox?.

Cause: This is caused by a dead lock as

  1. In dojox/grid/cells/dijit.js - formatNode() line 83: this.grid.rowHeightChanged(inRowIndex);

=> 2. dojox/grid/_Scroller.js - updatePageHeight() line 303:this.grid.sizeChange();

=> 3. then a new Row rendering is triggered

=> 4. goes to #1 again repeatly

will try to provide a patch on this.

Attachments (1)

11101.html (2.4 KB) - added by Evan 8 years ago.
Test case for reproduce the issue - running in IE7/8, double click any cells in last column can result the deadlock and frozen browser

Download all attachments as: .zip

Change History (15)

comment:1 Changed 9 years ago by bill

Owner: changed from bryanforbes to Bryan Forbes

comment:2 Changed 9 years ago by evan

Fixed with changeset 22903

comment:3 Changed 9 years ago by evan

This needs to be closed.

comment:4 Changed 8 years ago by Evan

Cc: peller@dojotoolkit.org,toonetown@dojotoolkit.org,drschwar@us.ibm.com,hwcdl@cn.ibm.com,BryanForbes@dojotoolkit.org,bill@dojotoolkit.org,xwzhu@cn.ibm.compeller@dojotoolkit.org, toonetown@dojotoolkit.org, drschwar@us.ibm.com, hwcdl@cn.ibm.com, BryanForbes@dojotoolkit.org, bill@dojotoolkit.org, xwzhu@cn.ibm.com
Milestone: tbd1.6.2
severity: normalmajor

comment:5 Changed 8 years ago by Evan

Resolution: fixed
Status: newclosed

In [27395]:

Fixes #11101 !strict fixed a deadlock when an editable grid put in dijit.form.Form or similar container - IE only

comment:6 Changed 8 years ago by Evan

Has also been applied to 1.7 and 1.6 branch with [27395]

comment:7 Changed 8 years ago by Kenneth G. Franqueiro

Does this apply to 1.5 as well? If so, I'd suggest backporting it to 1.5 branch also since it's a browser compatibility fix.

Also, is there an existing test page that easily reproduces this (or can be easily modified/augmented to do so)?

Thanks.

comment:8 Changed 8 years ago by Evan

In [27399]:

Refs #11101 !strict apply the fix to 1.5 branch since it's a pretty important IE-compatibility fix.

Changed 8 years ago by Evan

Attachment: 11101.html added

Test case for reproduce the issue - running in IE7/8, double click any cells in last column can result the deadlock and frozen browser

comment:9 Changed 8 years ago by bill

Milestone: 1.6.21.5.3

comment:10 Changed 8 years ago by Evan

In [27440]:

Refs #11101 fix a regression - inappropriate calling scope, apply fix across 1.6/1.7/trunk, not needed for 1.5, !strict

comment:11 Changed 7 years ago by Evan

In [29657]:

Refs #11101 !strict, revert previous fix which is not needed anymore with [Refs #11101, revert fix no needed anymore in 1.8.x and trunk after #14822 fixed

comment:12 Changed 7 years ago by Evan

Resolution: fixed
Status: closedreopened

Part of the previous fix([27395]) brings a regression(#15411 ), need to revert following snippet and figure out a better solution.

if(dojo.isIE && !changeSize && !resultSize && this._autoHeight){
	return;
}
Last edited 7 years ago by Evan (previous) (diff)

comment:13 Changed 7 years ago by Evan

In [29658]:

Refs #11101 !strict, #11101 is reopened, part of the previous fix([27395]) brings a regression(#15411), need to revert this snippet and figure out a better solution.

Applied to 1.5.x, 1.6.x and 1.7.x branches

comment:14 Changed 7 years ago by Evan

Resolution: fixed
Status: reopenedclosed

In [29663]:

Fixes #11101 !strict, this issue only occurs in < 1.8 - temporarily skip grid.update() once start editing in IE && autoHeight mode, so that dijit.form.Form.resize() or similar containers will not result into a deadlock.

back port to 1.5.x, 1.6.x and 1.7.x branches

Thanks for the fix from Oliver(IBM, CCLA)

Last edited 7 years ago by Evan (previous) (diff)
Note: See TracTickets for help on using tickets.