본문 바로가기

Project/sendbird를 활용한 웹 채팅

[Sendbird를 활용한 웹 채팅] 13. Electron window open 설정 - setWindowOpenHandler, 윈도우 포커스 맞추기

반응형

1. Electron에서 새로운 창 열릴 때 속성 설정하기

window.open으로 새로운 탭이 실행될 때, electron 윈도우를 설정하는 핸들러가 setWindowOpenHandler이다. 초기 윈도우인 win의 속성을 그대로 적용하고 부모 윈도우로 설정했다.

 

public/electron.js

function createWindow() {
  ...
  win.webContents.setWindowOpenHandler(() => {
    return {
      action: "allow",
      overrideBrowserWindowOptions: {
        ...win.webContents.browserWindowOptions,
        parent: win,
      },
    };
  });
  ...
 }

 

2. Electron에서 채팅방 포커스 맞추기

🔒 문제

열려 있는 채팅 방을 또 클릭 했을 때, 해당 채팅 방으로 포커스가 안 맞춰지는 문제가 생겼다.

 

🔑 해결

공식문서에 있는 event를 하나씩 넣어보다가 성공했다.(이틀동안 별의 별 시도를 해봤는데 드디어..) 왜 이렇게 해야 되는지는 모르지만, 새로운 탭이 열릴 때 electron에서는 ready-to-show 이벤트 안에 window.show()를 해줘야 named windowreopen될 때 focus가 맞춰진다.

 

public/electron.js

function createWindow() {
  ...
  win.webContents.on("did-create-window", (childWin, details) => {
    childWin.webContents.on("ready-to-show", () => {
      childWin.show();
    });
  });
  ...
}

 

 

Reference

반응형