Attached Files | fix.diff [^] (8,762 bytes) 2012-10-03 13:09 [Show Content] [Hide Content]diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/ob-view-form.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/ob-view-form.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/ob-view-form.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/ob-view-form.js
@@ -1835,6 +1835,13 @@
keyDown: function () {
if (this.grid && this.grid.editFormKeyDown) {
+ // To fix issue https://issues.openbravo.com/view.php?id=21786
+ var focusedItem = this.getFocusItem(),
+ isEscape = isc.EH.getKey() === 'Escape' && !isc.EH.ctrlKeyDown() && !isc.EH.altKeyDown() && !isc.EH.shiftKeyDown();
+ if (isEscape && focusedItem && Object.prototype.toString.call(focusedItem.isPickListShown) === '[object Function]' && focusedItem.isPickListShown()) {
+ return true; // Then the event will bubble to ComboBoxItem.keyDown
+ }
+
// To fix issue https://issues.openbravo.com/view.php?id=21382
this.grid.editFormKeyDown(arguments);
}
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js
@@ -127,7 +127,14 @@
},
filterFieldsKeyDown: function (item, form, keyName) {
- var response = OB.KeyboardManager.Shortcuts.monitor('OBGrid.filter', this.grid.fieldSourceGrid);
+ // To fix issue https://issues.openbravo.com/view.php?id=21786
+ var isEscape = isc.EH.getKey() === 'Escape' && !isc.EH.ctrlKeyDown() && !isc.EH.altKeyDown() && !isc.EH.shiftKeyDown(),
+ response;
+ if (isEscape && item && Object.prototype.toString.call(item.isPickListShown) === '[object Function]' && item.isPickListShown()) {
+ return true; // Then the event will bubble to ComboBoxItem.keyDown
+ }
+
+ response = OB.KeyboardManager.Shortcuts.monitor('OBGrid.filter', this.grid.fieldSourceGrid);
if (response !== false) {
response = this.Super('filterFieldsKeyDown', arguments);
}
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-action-button.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-action-button.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-action-button.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-action-button.js
@@ -36,7 +36,7 @@
var theView = this.view,
record, rowNum, actionObject;
- if (!theView.isShowingForm && theView.viewGrid.getSelectedRecords().length === 1) {
+ if (!theView.isShowingForm && theView.viewGrid.getSelectedRecords() && theView.viewGrid.getSelectedRecords().length === 1) {
// Keep current selection that might be lost in autosave
record = theView.viewGrid.getSelectedRecord();
rowNum = theView.viewGrid.getRecordIndex(record);
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-keyboard-manager.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-keyboard-manager.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-keyboard-manager.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-keyboard-manager.js
@@ -347,25 +347,55 @@
// Initialize KeyboardManager object
keyboardMgr = O.KeyboardManager = new KeyboardManager();
+ // To fix issue https://issues.openbravo.com/view.php?id=21786
+ isc.ComboBoxItem.getPrototype()._originalKeyDown = isc.ComboBoxItem.getPrototype().keyDown;
+ isc.ComboBoxItem.getPrototype().keyDown = function () {
+ var actionObject = {
+ target: this,
+ method: this._originalKeyDown,
+ parameters: arguments
+ },
+ response = OB.Utilities.callAction(actionObject),
+ isEscape = isc.EH.getKey() === 'Escape' && !isc.EH.ctrlKeyDown() && !isc.EH.altKeyDown() && !isc.EH.shiftKeyDown();
+
+ if (isEscape && this.isPickListShown()) {
+ this.hidePicker();
+ response = false;
+ }
+ return response;
+ };
+
/* isc.Page.setEvent('keyPress', 'OB.KeyboardManager.Shortcuts.monitor('Canvas')'); // Discart due to Chrome event propagation problems http://forums.smartclient.com/showthread.php?p=65578 */
isc.Canvas.getPrototype()._originalKeyDown = isc.Canvas.getPrototype().keyDown;
isc.Canvas.getPrototype().keyDown = function () {
+ var actionObject = {
+ target: this,
+ method: this._originalKeyDown,
+ parameters: arguments
+ },
+ response;
+
if (isc.Event.getKey() === 'Space') {
OB.KeyboardManager.Shortcuts.isSpacePressed = true;
}
- var response = OB.KeyboardManager.Shortcuts.monitor('Canvas');
- if (response) { // To ensure that if a previous keyDown was set in the Canvas it is executed if the action KeyboardManager.action should be propagated
- response = this._originalKeyDown();
+ response = OB.KeyboardManager.Shortcuts.monitor('Canvas');
+ if (response !== false) { // To ensure that if a previous keyDown was set in the Canvas it is executed if the action KeyboardManager.action should be propagated
+ response = OB.Utilities.callAction(actionObject);
}
return response;
};
isc.Canvas.getPrototype()._originalKeyUp = isc.Canvas.getPrototype().keyUp;
isc.Canvas.getPrototype().keyUp = function () {
+ var actionObject = {
+ target: this,
+ method: this._originalKeyUp,
+ parameters: arguments
+ };
if (isc.Event.getKey() === 'Space') {
OB.KeyboardManager.Shortcuts.isSpacePressed = false;
}
- return this._originalKeyUp();
+ return OB.Utilities.callAction(actionObject);
};
}(OB, isc));
\ No newline at end of file
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities.js
@@ -237,6 +237,8 @@
// If action is null/undefined then nothing is done and undefined is returned.
// When the action is called the result of the action is returned.
OB.Utilities.callAction = function (action) {
+ var response;
+
function IEApplyHack(method, object, parameters) {
if (!object) {
object = window;
@@ -262,18 +264,19 @@
return result;
}
- if (!action) {
+ if (!action || !action.method) {
return;
}
if (action.callback) {
action.callback();
} else {
if (navigator.userAgent.toUpperCase().indexOf("MSIE") !== -1) {
- IEApplyHack(action.method, action.target, action.parameters);
+ response = IEApplyHack(action.method, action.target, action.parameters);
} else {
- action.method.apply(action.target, action.parameters);
+ response = action.method.apply(action.target, action.parameters);
}
}
+ return response;
};
// ** {{{OB.Utilities.replaceNullStringValue}}} **
diff --git a/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js b/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js
--- a/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js
+++ b/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js
@@ -567,6 +567,20 @@
}
});
+// To fix issue https://issues.openbravo.com/view.php?id=21786
+isc.ComboBoxItem.addProperties({
+ isPickListShown: function () {
+ return (this.pickList ? (this.pickList.isDrawn() && this.pickList.isVisible()) : false);
+ },
+
+ hidePicker: function () {
+ if (this.pickList) {
+ this.pickList.hideClickMask();
+ this.pickList.hide();
+ }
+ }
+});
+
// overridden to never show a prompt. A prompt can be created manually
// when overriding for example the DataSource (see the OBStandardView).
isc.RPCManager.showPrompt = false;
|