@@ -424,6 +424,39 @@ export class FeatherGrid extends Widget {
424424 return this . _columnHeaderRenderer ;
425425 }
426426
427+ set cornerHeaderRenderer ( renderer : CellRenderer ) {
428+ const textRenderer = renderer as TextRenderer ;
429+
430+ // HeaderRenderer adds the filter dialogue box overlay
431+ this . _cornerHeaderRenderer = new HeaderRenderer ( {
432+ textOptions : {
433+ font : textRenderer . font ,
434+ wrapText : textRenderer . wrapText ,
435+ elideDirection : textRenderer . elideDirection ,
436+ textColor : textRenderer . textColor ,
437+ backgroundColor :
438+ this . grid . style . headerBackgroundColor ||
439+ textRenderer . backgroundColor ||
440+ Theme . getBackgroundColor ( ) ,
441+ verticalAlignment : textRenderer . verticalAlignment ,
442+ horizontalAlignment : textRenderer . horizontalAlignment ,
443+ format : textRenderer . format ,
444+ } ,
445+ isLightTheme : this . _isLightTheme ,
446+ grid : this . grid ,
447+ } ) ;
448+
449+ if ( ! this . grid ) {
450+ return ;
451+ }
452+
453+ this . _updateHeaderRenderer ( ) ;
454+ }
455+
456+ get cornerHeaderRenderer ( ) : CellRenderer {
457+ return this . _cornerHeaderRenderer ;
458+ }
459+
427460 set renderers ( renderers : Dict < CellRenderer > ) {
428461 this . _renderers = renderers ;
429462
@@ -607,6 +640,18 @@ export class FeatherGrid extends Widget {
607640 isLightTheme : this . _isLightTheme ,
608641 grid : this . grid ,
609642 } ) ;
643+
644+ this . _cornerHeaderRenderer = new HeaderRenderer ( {
645+ textOptions : {
646+ textColor : Theme . getFontColor ( 1 ) ,
647+ backgroundColor :
648+ this . grid . style . headerBackgroundColor || Theme . getBackgroundColor ( 2 ) ,
649+ horizontalAlignment : 'left' ,
650+ verticalAlignment : 'center' ,
651+ } ,
652+ isLightTheme : this . _isLightTheme ,
653+ grid : this . grid ,
654+ } ) ;
610655 }
611656
612657 copyToClipboard ( ) : void {
@@ -893,9 +938,17 @@ export class FeatherGrid extends Widget {
893938 this . grid . cellRenderers . update ( {
894939 'column-header' : this . _columnHeaderRenderer ,
895940 } ) ;
896- // Treating corner header as column header for rendering purposes
941+ // Treating corner-header as column-header if a value has not
942+ // been passed for the former.
943+ let hasCornerRenderer = false ;
944+ if ( this . backboneModel ) {
945+ hasCornerRenderer = this . backboneModel . get ( 'corner_renderer' ) !== null ;
946+ }
947+
897948 this . grid . cellRenderers . update ( {
898- 'corner-header' : this . _columnHeaderRenderer ,
949+ 'corner-header' : hasCornerRenderer
950+ ? this . _cornerHeaderRenderer
951+ : this . _columnHeaderRenderer ,
899952 } ) ;
900953 }
901954
@@ -1027,6 +1080,7 @@ export class FeatherGrid extends Widget {
10271080 private _renderers : Dict < CellRenderer > = { } ;
10281081 private _defaultRenderer : CellRenderer ;
10291082 private _columnHeaderRenderer : CellRenderer ;
1083+ private _cornerHeaderRenderer : CellRenderer ;
10301084 private _rowHeaderRenderer : CellRenderer ;
10311085 private _defaultRendererSet = false ;
10321086 private _cellClicked = new Signal < this, FeatherGrid . ICellClickedEvent > ( this ) ;
0 commit comments