Hi,
I've a problem with inline ListGrid editing, if one of field is custom CanvasItem then it breaks focus navigation with "tab" button. It just focus on a first widget on screen.
My custom CanvasItem contains DynamicForm with two more fields (but with one field it doesn't work either).
Tested latest version: v10.0p_2015-11-29/LGPL Deployment but doesn't work on 2015-07-xx build too.
Debug information: Then I press "tab" while I have focus in my second field of "CustomCanvasItem", then system reacts as follows:
1) isc.EventHandler.addClassMethods.handleKeyPress(), ISC_Core.js:33582
find that button "Tab" pressed, and ckickMaskUp() exists with topHardMask, and has focusCanvas, then call focusInNExtTabElement() on that canvas.
2) isc.CanvasItem.addProperties._canvas_focusInNextTabElement(), ISC_Forms.js:35094
Check is our canvas is instance of DynamicForm and delegate to DynamicForm.focusInNextTabElement();
3) isc.DynamicForm.addMethods._focusInNextTabElement(), ISC_Forms.js:13228 (it's our CanvasItem's form)
We've reached the end of all our items and try to focus on next widget instead of item
4) isc.Canvas.addMethods._focusInNextTabElement(), ISC_Core.js:65293
just forward to DynamicForm
5) isc.DynamicForm.addMethods._focusInNextTabElement(), ISC_Forms.js:13168 (it's ListGrid's edit form)
Here is on first lines there is check condition if target is masked then skip logic, and go to next widget instead.
Because we have a hardmask this logic will be triggered and no more default "focus to next item" behaviour.
If I am removing that checking mask condition then all steping to next field behaviour starts work correctly.
I know that it's not correct way to fix, but I hope this would be enough information to quickly find a problem.
PS. If I do not use Window isModal:true, then there is no hard mask all and logic will be skipped on 1) step.
Here is a small demo what I'm talking about: just focus on first inline item and then press Tab multiple times.
If you need any additional info just ask :)
I've a problem with inline ListGrid editing, if one of field is custom CanvasItem then it breaks focus navigation with "tab" button. It just focus on a first widget on screen.
My custom CanvasItem contains DynamicForm with two more fields (but with one field it doesn't work either).
Tested latest version: v10.0p_2015-11-29/LGPL Deployment but doesn't work on 2015-07-xx build too.
Debug information: Then I press "tab" while I have focus in my second field of "CustomCanvasItem", then system reacts as follows:
1) isc.EventHandler.addClassMethods.handleKeyPress(), ISC_Core.js:33582
find that button "Tab" pressed, and ckickMaskUp() exists with topHardMask, and has focusCanvas, then call focusInNExtTabElement() on that canvas.
2) isc.CanvasItem.addProperties._canvas_focusInNextTabElement(), ISC_Forms.js:35094
Check is our canvas is instance of DynamicForm and delegate to DynamicForm.focusInNextTabElement();
3) isc.DynamicForm.addMethods._focusInNextTabElement(), ISC_Forms.js:13228 (it's our CanvasItem's form)
We've reached the end of all our items and try to focus on next widget instead of item
4) isc.Canvas.addMethods._focusInNextTabElement(), ISC_Core.js:65293
just forward to DynamicForm
5) isc.DynamicForm.addMethods._focusInNextTabElement(), ISC_Forms.js:13168 (it's ListGrid's edit form)
Here is on first lines there is check condition if target is masked then skip logic, and go to next widget instead.
Because we have a hardmask this logic will be triggered and no more default "focus to next item" behaviour.
If I am removing that checking mask condition then all steping to next field behaviour starts work correctly.
I know that it's not correct way to fix, but I hope this would be enough information to quickly find a problem.
PS. If I do not use Window isModal:true, then there is no hard mask all and logic will be skipped on 1) step.
Here is a small demo what I'm talking about: just focus on first inline item and then press Tab multiple times.
Code:
isc.ClassFactory.defineClass("CustomCanvasItem", "CanvasItem"); isc.CustomCanvasItem.addMethods({ createCanvas: function () { var inputBoxProperties = isc.addProperties({ID: this.ID + "_doubleItem"}, { name: "amount", autoDraw: false, ceator: this, _autoAssignedName: true, showTitle: false, textAlign: "right", width: "*", showHint: false, validateOnChange: true }); var currencySelectItemProperties = isc.addProperties({ID: this.ID + "_comboBox"}, { name: "currency", autoDraw: false, creator: this, _autoAssignedName: true, showTitle: false, width: "*" }); return this.createAutoChild("inputForm", { _constructor: "DynamicForm", autoDraw: false, writeFormTag: false, width: "*", colWidths: ['*', '*'], autoParent: "none", numCols: 2, minColWidth: 0, flattenItems: true, overflow: "hidden", cellPadding: 0, items: [inputBoxProperties, currencySelectItemProperties] }); } }); isc.Window.create({ width: 1200, height: 910, autoCenter: true, // this option set will affect handleKeyPress(): line: "if (this.clickMaskUp() && lastEvent.keyName == this._$Tab) {" // and at that line will be triggered "_canvas_focusInNextTabElement". isModal: true, //------ without these arguments no any handlers will be triggered on "tab" at all. items: [ isc.ListGrid.create({ autoDraw: false, canEdit: true, alwaysShowEditors: true, width: "100%", fields: [{name: 'a'}, {name: 'b'},{name: 'c', editorType: "CustomCanvasItem"},{name: 'd'}], data: [{}] }) ] });
Comment