diff --git a/src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts b/src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts index 939d5ea61b..d4477ad323 100644 --- a/src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts +++ b/src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts @@ -15,6 +15,10 @@ const defaults: ICellSelectionModelOptions = { selectActiveCell: true }; +interface EventTargetWithClassName extends EventTarget { + className: string | undefined; +} + export class CellSelectionModel implements Slick.SelectionModel> { private grid!: Slick.Grid; private selector: ICellRangeSelector; @@ -110,6 +114,9 @@ export class CellSelectionModel implements Slick.SelectionModel) { + if ((e.target as EventTargetWithClassName).className === 'slick-resizable-handle') { + return; + } if (!isUndefinedOrNull(args.column)) { let columnIndex = this.grid.getColumnIndex(args.column.id!); if (this.grid.canCellBeSelected(0, columnIndex)) { diff --git a/src/sql/workbench/contrib/query/browser/gridPanel.ts b/src/sql/workbench/contrib/query/browser/gridPanel.ts index a1d566f94a..0ce241ad5b 100644 --- a/src/sql/workbench/contrib/query/browser/gridPanel.ts +++ b/src/sql/workbench/contrib/query/browser/gridPanel.ts @@ -482,6 +482,8 @@ export abstract class GridTableBase extends Disposable implements IView { this.table.registerPlugin(new AdditionalKeyBindings()); this._register(this.table.onContextMenu(this.contextMenu, this)); this._register(this.table.onClick(this.onTableClick, this)); + //This listener is used for correcting auto-scroling when clicking on the header for reszing. + this._register(this.table.onHeaderClick(this.onHeaderClick, this)); if (this.styles) { this.table.style(this.styles); @@ -580,6 +582,11 @@ export abstract class GridTableBase extends Disposable implements IView { this._state = val; } + private onHeaderClick(event: ITableMouseEvent) { + //header clicks must be accounted for as they force the table to scroll to the top; + this.scrolled = false; + } + private onTableClick(event: ITableMouseEvent) { // account for not having the number column let column = this.resultSet.columnInfo[event.cell.cell - 1];