Hi, Isomorphic,
I've noticed strange behavior with ComboBoxItem again, and find out that was caused by ComboBoxItem._mouseDownInPickList() method.
Shortly:
1. when i click on combobox picklist item.
2. picklist will get focus, be called hide() and then pickValue(..)
3. ComboBoxItem will be trigger with elementBlur(), because picklist got a focus (in short)
4. elementBlur() will call checkForEditorExit() and that will call handleEditorExit()
5. handleEditorExit() will check if last mouse down event was from picklist and if so then skip any exit logic.
That is done by ComboBoxItem._mouseDownInPickList().
If it fails to do so then any entered values in ComboBoxItem with addUnknownValues=true; will be passed to this._checkForValueFieldValue(value) and be fetched from server.
Meanwhile then fetching is happening pickValue() will do
and setElementValue() will set value to "Loading.." and hang forever because fetching is still happening ...
Problem is that picklist is immediately hidden then item clicked, and ComboBoxItem._mouseDownInPickList()
returns false.
fix would be remove !pickList.isVisible() checking from first if condition.
Issues was seen only on Chrome (don't know maybe it`s because too fast)
Tested on: SmartClient_v100p_2015-07-08_LGPL
I've noticed strange behavior with ComboBoxItem again, and find out that was caused by ComboBoxItem._mouseDownInPickList() method.
Shortly:
1. when i click on combobox picklist item.
2. picklist will get focus, be called hide() and then pickValue(..)
3. ComboBoxItem will be trigger with elementBlur(), because picklist got a focus (in short)
4. elementBlur() will call checkForEditorExit() and that will call handleEditorExit()
5. handleEditorExit() will check if last mouse down event was from picklist and if so then skip any exit logic.
That is done by ComboBoxItem._mouseDownInPickList().
If it fails to do so then any entered values in ComboBoxItem with addUnknownValues=true; will be passed to this._checkForValueFieldValue(value) and be fetched from server.
Meanwhile then fetching is happening pickValue() will do
Code:
var displayValue = this.mapValueToDisplay(value); this.setElementValue(displayValue);
Problem is that picklist is immediately hidden then item clicked, and ComboBoxItem._mouseDownInPickList()
returns false.
fix would be remove !pickList.isVisible() checking from first if condition.
Code:
_mouseDownInPickList : function () { var pickList = this.pickList; if (!pickList /*|| !pickList.isVisible()*/ || !pickList.isDrawn()) return false; var EH = isc.EH, event = isc.EH.lastEvent; //... }
Tested on: SmartClient_v100p_2015-07-08_LGPL
Comment