Skip to content

Commit 30b263a

Browse files
authored
fix cell merging issue with new header renderer (#160)
1 parent 13d165f commit 30b263a

File tree

1 file changed

+39
-14
lines changed

1 file changed

+39
-14
lines changed

src/feathergrid.ts

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ export class FeatherGrid extends Widget {
270270
}
271271

272272
this.grid.dataModel = this._dataModel;
273+
this._updateHeaderRenderer();
273274
this._filterDialog.model = this._dataModel;
274275
this._updateColumnWidths();
275276
}
@@ -387,13 +388,28 @@ export class FeatherGrid extends Widget {
387388
}
388389

389390
set columnHeaderRenderer(renderer: CellRenderer) {
390-
this._columnHeaderRenderer = renderer;
391+
const textRenderer = renderer as TextRenderer;
392+
393+
// Need to create a HeadeRenderer object as TextRenderer
394+
// objects do not support merged cell rendering.
395+
this._columnHeaderRenderer = new HeaderRenderer({
396+
textOptions: {
397+
font: textRenderer.font,
398+
textColor: textRenderer.textColor,
399+
backgroundColor: textRenderer.backgroundColor,
400+
verticalAlignment: textRenderer.verticalAlignment,
401+
horizontalAlignment: textRenderer.horizontalAlignment,
402+
format: textRenderer.format,
403+
},
404+
isLightTheme: this._isLightTheme,
405+
grid: this.grid,
406+
});
391407

392408
if (!this.grid) {
393409
return;
394410
}
395411

396-
this._updateGridRenderers();
412+
this._updateHeaderRenderer();
397413
}
398414

399415
get columnHeaderRenderer(): CellRenderer {
@@ -503,6 +519,8 @@ export class FeatherGrid extends Widget {
503519
}
504520

505521
public updateGridStyle() {
522+
this._updateHeaderRenderer();
523+
506524
if (!this._defaultRendererSet) {
507525
this._defaultRenderer = new TextRenderer({
508526
font: '12px sans-serif',
@@ -520,11 +538,15 @@ export class FeatherGrid extends Widget {
520538
verticalAlignment: 'center',
521539
});
522540

523-
this._columnHeaderRenderer = new TextRenderer({
524-
textColor: Theme.getFontColor(1),
525-
backgroundColor: Theme.getBackgroundColor(2),
526-
horizontalAlignment: 'left',
527-
verticalAlignment: 'center',
541+
this._columnHeaderRenderer = new HeaderRenderer({
542+
textOptions: {
543+
textColor: Theme.getFontColor(1),
544+
backgroundColor: Theme.getBackgroundColor(2),
545+
horizontalAlignment: 'left',
546+
verticalAlignment: 'center',
547+
},
548+
isLightTheme: this._isLightTheme,
549+
grid: this.grid,
528550
});
529551

530552
const scrollShadow = {
@@ -787,13 +809,6 @@ export class FeatherGrid extends Widget {
787809

788810
private _updateGridRenderers() {
789811
this.grid.cellRenderers.update({ body: this._rendererResolver.bind(this) });
790-
this.grid.cellRenderers.update({
791-
'column-header': this._columnHeaderRenderer,
792-
});
793-
// Treating corner header as column header for rendering purposes
794-
this.grid.cellRenderers.update({
795-
'corner-header': this._columnHeaderRenderer,
796-
});
797812
this.grid.cellRenderers.update({
798813
'row-header': this._rendererResolver.bind(this),
799814
});
@@ -836,6 +851,16 @@ export class FeatherGrid extends Widget {
836851
}
837852
}
838853

854+
private _updateHeaderRenderer() {
855+
this.grid.cellRenderers.update({
856+
'column-header': this._columnHeaderRenderer,
857+
});
858+
// Treating corner header as column header for rendering purposes
859+
this.grid.cellRenderers.update({
860+
'corner-header': this._columnHeaderRenderer,
861+
});
862+
}
863+
839864
private _createCommandRegistry(): CommandRegistry {
840865
const commands = new CommandRegistry();
841866
commands.addCommand(FeatherGridContextMenu.CommandID.SortAscending, {

0 commit comments

Comments
 (0)