(tabView: WaveTabView, tabInitialized: boolean, primaryStartupTab = false)
| 458 | } |
| 459 | |
| 460 | private async setTabViewIntoWindow(tabView: WaveTabView, tabInitialized: boolean, primaryStartupTab = false) { |
| 461 | if (this.activeTabView == tabView) { |
| 462 | return; |
| 463 | } |
| 464 | const oldActiveView = this.activeTabView; |
| 465 | tabView.isActiveTab = true; |
| 466 | if (oldActiveView != null) { |
| 467 | oldActiveView.isActiveTab = false; |
| 468 | } |
| 469 | this.activeTabView = tabView; |
| 470 | this.allLoadedTabViews.set(tabView.waveTabId, tabView); |
| 471 | if (!tabInitialized) { |
| 472 | console.log("initializing a new tab", primaryStartupTab ? "(primary startup)" : ""); |
| 473 | await this.initializeTab(tabView, primaryStartupTab); |
| 474 | this.finalizePositioning(); |
| 475 | } else { |
| 476 | console.log("reusing an existing tab, calling wave-init", tabView.waveTabId); |
| 477 | tabView.webContents.send("wave-init", tabView.savedInitOpts); // reinit |
| 478 | this.finalizePositioning(); |
| 479 | } |
| 480 | |
| 481 | // something is causing the new tab to lose focus so it requires manual refocusing |
| 482 | tabView.webContents.focus(); |
| 483 | setTimeout(() => { |
| 484 | if (tabView.webContents && this.activeTabView == tabView && !tabView.webContents.isFocused()) { |
| 485 | tabView.webContents.focus(); |
| 486 | } |
| 487 | }, 10); |
| 488 | setTimeout(() => { |
| 489 | if (tabView.webContents && this.activeTabView == tabView && !tabView.webContents.isFocused()) { |
| 490 | tabView.webContents.focus(); |
| 491 | } |
| 492 | }, 30); |
| 493 | } |
| 494 | |
| 495 | private finalizePositioning() { |
| 496 | if (this.isDestroyed()) { |
no test coverage detected