From a728de55829b006e2e1c038ff791a30a8953b456 Mon Sep 17 00:00:00 2001 From: martinRenou Date: Mon, 27 Sep 2021 10:18:53 +0200 Subject: [PATCH] Do not wait for "displayed" before applying the layout And trigger a "layout-applied" event --- packages/base/src/widget.ts | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/base/src/widget.ts b/packages/base/src/widget.ts index 981264fc31..ec2e8280a6 100644 --- a/packages/base/src/widget.ts +++ b/packages/base/src/widget.ts @@ -897,11 +897,9 @@ export class DOMWidgetView extends WidgetView { } ); - this.displayed.then(() => { - this.update_classes([], this.model.get('_dom_classes')); - this.setLayout(this.model.get('layout')); - this.setStyle(this.model.get('style')); - }); + this.update_classes([], this.model.get('_dom_classes')); + this.setLayout(this.model.get('layout')); + this.setStyle(this.model.get('style')); this._comm_live_update(); this.listenTo(this.model, 'comm_live_update', () => { @@ -920,23 +918,25 @@ export class DOMWidgetView extends WidgetView { oldLayoutView.remove(); } - return this.create_child_view(layout) + this.create_child_view(layout) .then((view) => { - // Trigger the displayed event of the child view. - return this.displayed.then(() => { - view.trigger('displayed'); - this.listenTo(view.model, 'change', () => { - // Post (asynchronous) so layout changes can take - // effect first. - MessageLoop.postMessage( - this.luminoWidget, - Widget.ResizeMessage.UnknownSize - ); - }); + this.trigger('layout-applied'); + this.listenTo(view.model, 'change', () => { + // Post (asynchronous) so layout changes can take + // effect first. MessageLoop.postMessage( this.luminoWidget, Widget.ResizeMessage.UnknownSize ); + }); + MessageLoop.postMessage( + this.luminoWidget, + Widget.ResizeMessage.UnknownSize + ); + + // Trigger the displayed event of the child view. + return this.displayed.then(() => { + view.trigger('displayed'); return view; }); }) @@ -956,7 +956,7 @@ export class DOMWidgetView extends WidgetView { oldStyleView.remove(); } - return this.create_child_view(style) + this.create_child_view(style) .then((view) => { // Trigger the displayed event of the child view. return this.displayed.then(() => {