Hi Hackers,

Attached is the patch for below minor fix in the switch cell tab navigation:

After pressing the tab key on switch cell, sometimes focus doesn't go to
the immediate next editable cell. It goes to the different cell for
fraction of seconds and again comes to the next editable cell.

Please review.

Regards,
Ganesh Jaybhay
diff --git a/web/pgadmin/static/js/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid.pgadmin.js
index 230d7ce56..61127ddb1 100644
--- a/web/pgadmin/static/js/backgrid.pgadmin.js
+++ b/web/pgadmin/static/js/backgrid.pgadmin.js
@@ -206,7 +206,7 @@ define([
             renderable = Backgrid.callByNeed(cell.column.renderable(), cell.column, cell.model);
             editable = Backgrid.callByNeed(cell.column.editable(), cell.column, model);
             if(cell && cell.$el.hasClass('edit-cell') &&
-              !cell.$el.hasClass('privileges') || cell.$el.hasClass('delete-cell')) {
+              !cell.$el.hasClass('privileges') || cell.$el.hasClass('delete-cell') || cell.$el.hasClass('subgrid-cell')) {
               model.trigger('backgrid:next', m, n, false);
               if(cell.$el.hasClass('delete-cell')) {
                 setTimeout(function(){
@@ -717,7 +717,11 @@ define([
           gotoCell = e.shiftKey ? self.$el.prev() : self.$el.next();
         }
 
-        if (gotoCell) {
+        if (gotoCell && gotoCell.length > 0) {
+          if(gotoCell.hasClass('editable')){
+            e.preventDefault();
+            e.stopPropagation();
+          }
           let command = new Backgrid.Command({
             key: 'Tab',
             keyCode: 9,
@@ -727,12 +731,8 @@ define([
           setTimeout(function() {
             // When we have Editable Cell
             if (gotoCell.hasClass('editable') && gotoCell.hasClass('edit-cell')) {
-              e.preventDefault();
-              e.stopPropagation();
               gotoCell.trigger('focus');
             } else if (gotoCell.hasClass('editable')) {
-              e.preventDefault();
-              e.stopPropagation();
               setTimeout(function() {
                 self.model.trigger('backgrid:edited', self.model,
                   self.column, command);

Reply via email to