Skip to content

Instantly share code, notes, and snippets.

@milandamen
Created March 16, 2018 12:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save milandamen/d3428ec8deb8b5efed1454ac58fb99c1 to your computer and use it in GitHub Desktop.
Save milandamen/d3428ec8deb8b5efed1454ac58fb99c1 to your computer and use it in GitHub Desktop.
Qooxdoo issue 9504 combobox problem Chrome
qx.Class.define("qx.ui.table.pane.ScrollerMod",
{
extend : qx.ui.table.pane.Scroller,
members :
{
startEditing : function () {
console.log('startEditing');
var startedEditing = this.base(arguments);
if (startedEditing) {
if (!(this._cellEditor instanceof qx.ui.window.Window)) {
this._cellEditor.addListenerOnce('focusin', this._onFocusinCellEditorAddBlurListener, this);
this.debug('added FOCUSIN listener to hash: ' + this._cellEditor.$$hash);
}
}
return startedEditing;
},
/**
* Focusin event handler which attaches the blur event listener ot the cell editor
* and uses a timer event to allow the focusin event listener execution before
* the blur event listener execution
*/
_onFocusinCellEditorAddBlurListener : function (e) {
this.debug("executed FOCUSIN event listener for hash: " + e.getTarget().$$hash);
qx.event.Timer.once(function() {
this._cellEditor.addListenerOnce('blur', this._onBlurCellEditorStopEditing, this);
this.debug('added BLUR listener to hash: ' + this._cellEditor.$$hash);
}, this, 0);
},
/**
* Stop editing whenever the cell editor blurs.
*/
_onBlurCellEditorStopEditing : function (e) {
this.debug("executed BLUR listener for hash " + e.getTarget().$$hash);
if (this._cellEditor === e.getTarget()) {
this.debug('hash: ' + this._cellEditor.$$hash);
this.stopEditing();
}
}
}
});
function createRandomRows(rowCount) {
var rowData = [];
var now = new Date().getTime();
var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
var nextId = 0;
for (var row = 0; row < rowCount; row++) {
var date = new Date(now + Math.random() * dateRange - dateRange / 2);
rowData.push([ nextId++, Math.random() * 10000, date, (Math.random() > 0.5), null ]);
}
return rowData;
}
// window
var win = new qx.ui.window.Window("Table").set({
layout : new qx.ui.layout.Grow(),
allowClose: false,
allowMinimize: false,
contentPadding: 0
});
this.getRoot().add(win);
win.moveTo(30, 40);
win.open();
// table model
var tableModel = new qx.ui.table.model.Simple();
tableModel.setColumns([ "ID", "A number", "A date", "Boolean", "A string" ]);
tableModel.setData(createRandomRows(1000));
// make second column editable
tableModel.setColumnEditable(1, true);
tableModel.setColumnEditable(4, true);
// table
var table = new qx.ui.table.Table(tableModel, {
tablePaneScroller : function(obj) { return new qx.ui.table.pane.ScrollerMod(obj) }
}).set({
decorator: null
});
win.add(table);
var tcm = table.getTableColumnModel();
// Display a checkbox in column 3
tcm.setDataCellRenderer(3, new qx.ui.table.cellrenderer.Boolean());
// use a different header renderer
tcm.setHeaderCellRenderer(2, new qx.ui.table.headerrenderer.Icon("icon/16/apps/office-calendar.png", "A date"));
var listData = [
"Option 0",
"Option 1",
"Item 2",
"Item 3"
];
var comboBoxFactory = new qx.ui.table.celleditor.ComboBox();
comboBoxFactory.setListData(listData);
tcm.setCellEditorFactory(4, comboBoxFactory);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment