PDA

View Full Version : [FIXED] IE Tree node arrow expand bug



ohnam
11 Apr 2013, 1:12 PM
http://docs.sencha.com/ext-js/4-2/#!/example/build/KitchenSink/ext-theme-neptune/

If you run the KitchenSink example in IE 10, when you expand the node, notice the arrow does not change state. To be more exact the x-grid-tree-node-expanded class gets added and then removed, its a small flicker.

*EDIT BY SLEMMON
I also see the same behavior in 4.2.1.744

slemmon
12 Apr 2013, 1:55 PM
Thanks for the report! I have opened a bug in our bug tracker.

hassan.mahmood05
24 May 2013, 6:28 AM
What is the fix applied? As i am still using ExtJS 4.0.3 and cannot upgrade to 4.2.1 due to some application constraints. So i want to fix it in the version i am using now.

miti
8 Oct 2013, 10:58 AM
What is the fix applied? As i am still using ExtJS 4.0.3 and cannot upgrade to 4.2.1 due to some application constraints. So i want to fix it in the version i am using now.

Any help?

Romick
24 Jul 2014, 12:20 AM
Recently I hav found this issue and here is my fix.


Ext.override(Ext.view.Table, {
onUpdate: function (store, record, operation, changedFieldNames) {
var me = this,
rowTpl = me.rowTpl,
index = null,
oldRow = null,
oldRowDom = null,
newRowDom = null,
newAttrs = null,
attLen = null,
attName = null,
attrIndex = null,
overItemCls = null,
focusedItemCls = null,
beforeFocusedItemCls = null,
selectedItemCls = null,
beforeSelectedItemCls = null,
columns = null;

if (me.viewReady) {
oldRowDom = me.getNodeByRecord(record, false);
if (oldRowDom) {
overItemCls = me.overItemCls;
focusedItemCls = me.focusedItemCls;
beforeFocusedItemCls = me.beforeFocusedItemCls;
selectedItemCls = me.selectedItemCls;
beforeSelectedItemCls = me.beforeSelectedItemCls;
index = me.indexInStore(record);
oldRow = Ext.fly(oldRowDom, '_internal');
newRowDom = me.createRowElement(record, index);
if (oldRow.hasCls(overItemCls)) {
Ext.fly(newRowDom).addCls(overItemCls);
}
if (oldRow.hasCls(focusedItemCls)) {
Ext.fly(newRowDom).addCls(focusedItemCls);
}
if (oldRow.hasCls(beforeFocusedItemCls)) {
Ext.fly(newRowDom).addCls(beforeFocusedItemCls);
}
if (oldRow.hasCls(selectedItemCls)) {
Ext.fly(newRowDom).addCls(selectedItemCls);
}
if (oldRow.hasCls(beforeSelectedItemCls)) {
Ext.fly(newRowDom).addCls(beforeSelectedItemCls);
}
columns = me.headerCt.getGridColumns();
if (Ext.isIE9m && oldRowDom.mergeAttributes) {//fix applied
oldRowDom.mergeAttributes(newRowDom, true);
} else {
newAttrs = newRowDom.attributes;
attLen = newAttrs.length;
for (attrIndex = 0; attrIndex < attLen; attrIndex++) {
attName = newAttrs[attrIndex].name;
if (attName !== 'id') {
oldRowDom.setAttribute(attName, newAttrs[attrIndex].value);
}
}
}
if (columns.length) {
me.updateColumns(record, me.getNode(oldRowDom, true), me.getNode(newRowDom, true), columns, changedFieldNames);
}
while (rowTpl) {
if (rowTpl.syncContent) {
if (rowTpl.syncContent(oldRowDom, newRowDom) === false) {
break;
}
}
rowTpl = rowTpl.nextTpl;
}
me.fireEvent('itemupdate', record, index, oldRowDom);
me.refreshSize();
}
}
}

});